>웹 프론트엔드 >CSS 튜토리얼 >`transform:rotate()`가 `z-index`를 취소하는 이유는 무엇입니까?

`transform:rotate()`가 `z-index`를 취소하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-23 20:43:14436검색

Why Does `transform: rotate()` Cancel Out `z-index`?

변형(회전)으로 취소된 Z-인덱스

동작 이해

CSS에서 변환 속성을 사용하면 새로운 "스태킹 컨텍스트"를 생성할 수 있습니다. " 요소에 대해. 이는 요소와 해당 하위 요소가 렌더링 프로세스에서 별도의 레이어를 형성한다는 것을 의미합니다. 또한 기본값이 아닌 z-index 값을 가진 요소는 자체 스택 컨텍스트도 생성합니다.

문제 설명

제공된 코드에서 .test 요소에는 변환: 회전(10deg);이 있습니다. 스태킹 컨텍스트를 생성합니다. 그런 다음 .test:after 의사 요소에 z-index: -1이 할당됩니다. 그러나 이는 .test 뒤에 위치하지 않습니다.

이유

Z-index는 스태킹 컨텍스트 내에서 작동합니다. .test에 -webkit-transform을 설정하면 요소와 그 하위 요소에 대한 새로운 스태킹 컨텍스트가 생성됩니다. 결과적으로 .test:after의 z-index: -1은 .test 스태킹 컨텍스트 내 위치에만 영향을 미칩니다.

해결책

이 문제를 해결하려면 .test와 .test:동일한 스태킹 컨텍스트를 공유한 후입니다. 이를 달성하는 한 가지 방법은 .test를 포장 컨테이너에 배치하고 대신 컨테이너를 회전시키는 것입니다.

업데이트된 코드는 다음과 같습니다.

.wrapper {
  -webkit-transform: rotate(10deg);
}

.test {
  width: 150px;
  height: 40px;
  margin: 30px;
  line-height: 40px;
  position: relative;
  background: white;
}

.test:after {
  width: 100px;
  height: 35px;
  content: "";
  position: absolute;
  top: 0;
  right: 2px;
  -webkit-box-shadow: 0 5px 5px #999;
  -webkit-transform: rotate(3deg);
  transform: rotate(3deg);
  z-index: -1;
}

<div class="wrapper">
  <div class="test">z-index is canceled.</div>
</div>

이 예에서는 , 변환 회전은 .wrapper 컨테이너에 적용되어 .test 및 .test:after 모두에 대한 단일 스택 컨텍스트를 생성합니다. 이를 통해 .test:after의 z-index: -1이 예상대로 적용됩니다.

위 내용은 `transform:rotate()`가 `z-index`를 취소하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.