답변:
z-index
속성은 단지와 요소에서 작동 position
이외의 값 static
(예를 들어 position: absolute;
, position: relative;
또는position: fixed
).
position: sticky;
Firefox 에서도 지원되며 Safari에서 접두사를 사용하고 이전 버전의 Chrome에서는 맞춤 플래그로 한동안 작업했으며 Microsoft는 Edge 브라우저에 추가하려고합니다.
중요
정기적으로 배치 position: relative
하려면을 설정 한 요소도 포함시켜야 합니다 z-index
. 그렇지 않으면 적용되지 않습니다.
position: relative
기본적으로 다른 상대 방법으로 행동 요소에도 불구하고 작업에 Z- 인덱스에 대한
static
요소는 정적 이며에서 이동할 수 없습니다 x, y or z planes
. 그들은에서 이동할 수 없습니다 x plane (left or right)
또는 y plane (top or bottom)
우리가 작업 할 때처럼 position: absolute
. 그리고 그들은 안으로 이동할 수도 없습니다 z plane i.e. with z-index
.
z-index
그리드 요소 사용과 관련된 문제를 알고 있습니까 ?
위치를 다른 값으로 설정 static
했지만 요소가 z-index
여전히 작동하지 않는 경우 일부 상위 요소가 z-index
설정 되었을 수 있습니다 .
스태킹 컨텍스트에는 계층 구조가 있으며 각 스태킹 컨텍스트는 부모의 스태킹 컨텍스트의 스택 순서로 간주됩니다.
따라서 다음 HTML로
div { border: 2px solid #000; width: 100px; height: 30px; margin: 10px; position: relative; background-color: #FFF; }
#el3 { background-color: #F0F; width: 100px; height: 60px; top: -50px; }
<div id="el1" style="z-index: 5"></div>
<div id="el2" style="z-index: 3">
<div id="el3" style="z-index: 8"></div>
</div>
아니오가 얼마나 큰 문제 z-index
의 el3
설정됩니다, 항상 아래에있을 것입니다 el1
그것의 부모가 낮은 스태킹 컨텍스트를 가지고 있기 때문에. 누적 순서 el3
가 실제로 3.8 인 수준으로 5 보다 낮은 수준으로 누적 순서를 상상할 수 있습니다. .
부모 요소의 누적 컨텍스트를 확인하려면 다음을 사용할 수 있습니다.
var el = document.getElementById("#yourElement"); // or use $0 in chrome;
do {
var styles = window.getComputedStyle(el);
console.log(styles.zIndex, el);
} while(el.parentElement && (el = el.parentElement));
대부분의 경우 작동하려면 요소를 배치해야합니다 z-index
.
실제로 position: relative
문제의 요소에 적용 하면 문제가 해결 될 수 있습니다 (그러나 확실하게 알 수있는 코드가 충분하지 않습니다).
사실 position: fixed
, position: absolute
그리고 position: sticky
또한 가능하게 할 것이다 z-index
, 그러나 그 값은 레이아웃을 변경합니다. 와position: relative
레이아웃 방해되지 않습니다.
기본적으로 요소가 position: static
기본 설정 이 아닌 한 위치가 고려되어 z-index
작동합니다.
"Z- 색인이 왜 작동하지 않습니까?"에 대한 많은 답변 질문은 단지 주장z-index
은 위치 지정된 요소 작동 . CSS3부터는 더 이상 사실이 아닙니다.
플렉스 아이템 또는 그리드 아이템 인 요소 는 is 인 경우 z-index
에도 사용할 수 있습니다 .position
static
사양에서 :
Flex 항목은 순서가 수정 된 문서 순서가 원시 문서 순서 대신 사용되며 is 인 경우에도 스택 컨텍스트를 작성하는
z-index
것 이외의 값을 제외하고는 인라인 블록과 정확히 동일하게 페인트합니다 .auto
position
static
그리드 항목의 페인팅 순서는 인라인 블록과 동일하지만 주문 수정 문서 순서는 원시 문서 순서 대신 사용됩니다.
z-index
is 인auto
경우에도 스택 컨텍스트를 만드는 것 이외의 값position
입니다static
.
z-index
위치가 지정되지 않은 플렉스 항목에 대한 작업 데모는 다음과 같습니다 . https://jsfiddle.net/m0wddwxs/
position: static
처리 할 때와 동일 하게 취급한다고 말합니다 position: relative
. 따라서 CSS3에서 요소를 배치 해야하는 것이 더 이상 사실이 아니라고 CSS3는 플렉스 및 그리드 항목을 배치 된 것처럼 처리합니다. 아마 같은 것을 보는 두 가지 방법 일 것입니다.
position:relative
. 절대 위치의 플렉스 아이템의 자손은 플렉스 아이템이 위치되지 않기 때문에 플렉스 아이템을 포함하는 블록으로 간주하지 않습니다. ( jsfiddle.net/0yo7utfL/2 )
overflow-y: scroll
하지 못하게 overflow-x: visible
... ... 좀 봐 주시겠습니까?
Stacking Context
.