최근 프로젝트를 하면서 아무리 z-index를 입력해도 (심지어 999를 넣어도) 원하는대로 화면위로 올라오지 않았다.
z-index보다 위에있는 element는 심지어 z-index가 없어서 더 환장할 노릇이었다.
그래서 그동안 한번도 고민해보지 않았던 z-index에 대해 찾아보았다.
정말 개발은 하면할수록 내가 모르는게 투성이라는걸 알아가는것 같다.
어쨌든 그렇게 알게된 z-index 작동 원리를 정리해보고자 한다.
이번에 알게된 제일 충격적인 사실... z-index도 우선순위가 있다.
다른말로 하면, 자식요소의 z-index가 아무리 높아도 부모요소의 z-index에 제한을 받는다.
<div class='parent1' style='zIndex: 1'>
<div class='parent1__child1' style='zIndex: 3' />
<div class='parent1__child2' style='zIndex: 2' />
</div>
<div class='parent2' style='zIndex:10'>
<div class='parent2__child1' style='zIndex: 1' />
<div class='parent2__child2' style='zIndex: 2' />
</div>
이런 코드가 있다면 parent1__child1
은 z-index값이 3이지만, 부모요소인 parent1
의 z-index가 1이기 때문에,
부모요소의 z-index가 10인 parent2__child1
보다 아래쪽에 있게 된다.
parent1__child1
과 parent1__child2
를 비교할 경우, 부모요소가 동일하므로 자신이 가진 z-index 값으로만 비교할 수 있다.
모든 요소들이 겹쳐있다고 가정했을때 위에있는 요소들의 순위는parent2__child2
- parent2__child1
- parent1__child1
- parent1__child2
이다.
즉 먼저 부모요소의 z-index 값 비교
를 한 후, 자식 요소의 z-index 값 비교
를 하여 우선순위가 정해진다.
이건 너무 당연한 말이지만, 같은 위치에 있는 `red`와 `blue` div가 있다면 뒤에 적힌 `blue`가 `red` 위에 위치한다.
b. position
의 값이 static
이 아닐 경우, 같은 코드레벨에서 static
인 요소보다 위에 위치한다.blue
가 red
보다 뒤에 나왔지만 red
의 position이 absolute이므로 blue
보다 위에 위치하게된다.
만약 blue
와 red
의 position이 둘다 static이 아니라면, 뒤에 나온 요소가 위에 위치한다.
CSS 변수 지정 및 CSS에서 HTML 변수 가져오기 (0) | 2022.12.25 |
---|---|
HTTP :: Form의 encType 속성 (0) | 2021.01.03 |
CSS 방법론? 도구? (0) | 2020.12.20 |
HTML :: <a target="_blank"> (0) | 2020.12.10 |
CSS:: white-space (글자 공백 설정), text-overflow (0) | 2020.08.22 |
댓글 영역