z-index
값이 높을수록 위에 쌓인다.쌓임 맥락(Stacking Context)은 HTML 요소들을 가상의 z축(깊이) 방향으로 배치하는 개념이다. 기본적으로 요소들은 DOM 순서에 따라 쌓인다. 즉, 뒤에 정의한 요소일수록 화면에선 위에 위치한다.
position
을 적용한 요소(positioned)는 position
을 적용하지 않은 요소(non-positioned)보다 위에 쌓인다. positioned 요소들 중에선 z-index
값이 높을수록 위에 쌓인다. 참고로 z-index
는 positioned 요소에서만 작동한다.
position
속성이 static
이외의 값을 가지는 요소position
속성이 static
인 요소position
속성을 지정하지 않으면 기본값 static
(non-positioned)z-index
속성을 지정하지 않으면 기본값 auto
아래 조건을 만족하는 요소는 새로운 쌓임 맥락을 생성한다. 그럼 자식 요소들은 해당 맥락 내에서만 쌓임 순서가 결정돼서 부모의 쌓임 맥락을 벗어날 수 없게 된다. 때문에 자식 요소의 z-index
가 부모 요소보다 크더라도 부모 요소가 다른 요소들보다 뒤에 있다면 자식 요소 역시 뒤에 배치된다.
position: fixed
혹은 position: sticky
position: relative
혹은 position: absolute
이면서, z-index
속성이 auto
가 아닐 때display: flex
혹은 display: grid
이면서, z-index
속성이 auto
가 아닐 때opacity
값이 1 미만일 때transform
, filter
, backdrop-filter
등 속성이 none
이 아닐 때<div style="position: relative; z-index: 1">
A 요소 (z-index: 1)
<div style="position: absolute; z-index: 999">
A-1 요소 (z-index: 999)
</div>
</div>
<div style="position: relative; z-index: 2">
B 요소 (z-index: 2)
</div>
https://codepen.io/colorfilter/pen/wBvovZK
z-index
> A 요소 z-index
이므로 B 요소가 위에 쌓임z-index
> A 요소 z-index
이므로 A-1 요소가 위에 쌓임