-
Z-index와 Stacking Context(스태킹 컨텍스트)CSS 2021. 3. 1. 22:48
Z-index를 사용할 때 Stacking Context를 고려하십니까?
아마 대부분 스태킹 컨텍스트에 의해서 z-index의 순서가 결정된 다는 것을 알고 있을겁니다.
여기서 더 나아가서 또 놀라운 사실이 있습니다.
스택 컨텍스트 생성에 있어서 놀라운 예외가 있습니다.
스택 컨텍스트 생성을 발생시키지 않게 함으로 인해서 내부 콘텐츠와 z-index를 교차할 수 있습니다.
<div class="scroll-area"> <div class="vertical-bar"></div> <div class="vertical-bar"></div> <div class="vertical-bar"></div> <div class="vertical-bar"></div> </div> <div class="yellow-horizontal-bar">~~JUST PASSING THROUGH~~</div>
.scroll-area { overflow: scroll; border: 3px solid salmon; width: 18ex; height: 15ex; margin-left: 2ex; } .scroll-area .vertical-bar { position: relative; float: left; height: 50ex; width: 4ex; background: repeating-linear-gradient( 120deg, salmon 0px, salmon 10px, orange 10px, orange 20px ); } .scroll-area .vertical-bar:nth-child(even) { z-index: 4; opacity: 0.9; } .yellow-horizontal-bar { margin-top: -10ex; margin-bottom: 10ex; max-width: 30ex; background: #EEDD88; position: relative; z-index: 2; }
See the Pen vertical-bar z-index by YoungMinKim (@oinochoe) on CodePen.
위와 같은 예외는 웹 환경을 더욱 더 복잡하게 만들었습니다.
결국 이러한 예외들에 대한 호환성을 극대화하기로 결정한 것입니다.
또 다른 예외가 있습니다.
위의 상황에서는 z-index가 -2인 두개의 스태킹 컨텍스트가 모두 blue box(z-index 0상태) 아래에 있어야 하는데 붉은 박스가 최상위로 올라와 있습니다.
트릭은 바로 transform-style: preserve-3d 입니다.
See the Pen z-index transform preserve-3d by YoungMinKim (@oinochoe) on CodePen.
transform-style preserve-3d를 통해 3d 공간을 만든 상태에서 붉은 색상의 박스를 translateZ축 양수 방향으로 밀어냅니다.
스태킹 컨텍스트의 기본규칙을 벗어나는 이러한 트릭들은 호환성에 위배되긴 하지만 알아두면 유용합니다.
이상입니다.
출처 : abandonedwig.info/blog/2020/07/03/css-painting-order.html
'CSS' 카테고리의 다른 글
@scope (.media) 미디어쿼리 (0) 2021.09.12 border에 background-image 지정하기 / border에 애니메이션 부여하기 (0) 2021.04.18 CSS 마스터를 위한 15가지 기법 (0) 2021.02.21 Grid로 가장자리 색상바를 만드는 방법 (0) 2021.02.21 Repaint만 일어나는 속성, 아예 Repaint도 일어나지 않는 속성 (0) 2021.02.21