찾다
웹 프론트엔드CSS 튜토리얼CSS Magic Hall: Z-색인을 정말로 이해하고 있나요?

1. 소개          

단순한 팝업 효과를 개발한다면, z-index를 통해 요소들 간의 쌓임 관계를 조정하는 방법만 알아도 충분합니다. 그러나 여러 팝업 창 간의 계단식 관계를 적절하게 처리하려면 z-index 뒤에 있는 원리와 호환성 문제를 완전히 이해하는 것이 필요한 지식입니다. 이 기사는 나중에 참고할 수 있도록 W3C 권장 사항 계층 프레젠테이션을 연구한 후 편집한 노트 역할을 합니다.

영어 명사를 중국어 명사로 번역할 때 모호성을 유발하기 쉽기 때문에(예: Normal flow를 문서 흐름으로 번역), 본 글에서는 원래 영어 명사를 그대로 사용하며, 관련된 영어명사에 대한 설명은 다음과 같습니다. 다음:

위치 지정되지 않은 요소: CSS 위치 지정이 없는 요소, 즉 위치가 있는 요소: 정적입니다.

위치 요소: CSS 위치 요소, 즉 위치가 상대/절대/고정인 요소입니다.

box: 문서 트리는 요소로 구성되며, 렌더링 트리는 상자로 구성됩니다. 요소 크기 및 레이아웃 렌더링 작업의 실제 개체는 요소가 아니라 상자입니다. 상자는 요소에 따라 생성됩니다(요소에서 상응하게 생성되지 않지만 규칙에 따라 렌더러에 의해 자동으로 생성되는 익명 상자도 있습니다). 위치가 지정된 요소는 위치 상자에 해당합니다.

z축: 상자 위치 좌표계의 Z축입니다.

stacking context: z축의 기본 단위인 stacking context. 상자와 스태킹 컨텍스트 간의 매핑 관계는 N:1입니다. 각 스태킹 컨텍스트에는 상위 컨텍스트(루트 스태킹 컨텍스트 제외)와 0~N개의 하위 컨텍스트가 있습니다.

루트 스태킹 컨텍스트: 루트 상자(html/body에 해당하는 상자)에 해당하는 스태킹 컨텍스트는 다른 스태킹 컨텍스트의 조상 컨텍스트입니다. 루트 스태킹 컨텍스트의 범위는 전체 z축을 포함합니다.

스택 레벨: 스태킹 레벨. N개의 상자가 동일한 스태킹 컨텍스트에 있는 경우 z축에서의 위치는 스택 레벨에 따라 결정됩니다. 참고: 스택 수준은 px와 같은 절대값이 아닌 상대값입니다.

2. 그래픽 계층 디스플레이 실제로 우리가 자주 접하는 Z-index는 계층 디스플레이의 속성일 뿐입니다. Z-index의 원리를 이해하는 것은 본질적으로 계층을 이해하는 것입니다. 계층적 표시(z축, (루트) 스택 컨텍스트, 상자, 스택 수준)와 관련된 개체 및 속성과 이들 간의 관계를 이해하기 위해 예를 사용하겠습니다. HTML Markup

<style>
  p{position:relative;}</style>

  <p>
    </p><p></p>
  
  <p></p>
  <p></p>
  <p></p><p>
</p>


지침:

1. 렌더링 트리를 구성할 때 해당 요소에 해당하는 상자가 생성되므로 p#d1->d1:box,p#d2- >d2 :상자,p#d3->d3:상자,p#d4->d4:상자,p#p1->p1:상자.

2. 위치 지정 상자의 경우 z-index 속성 값이 0이 아닌 경우 새 스택 컨텍스트가 생성되고 해당 하위 상자는 이 새 스택 컨텍스트에 속하게 됩니다.

3. 동일한 스택 컨텍스트의 z-index만 비교 가능합니다. 즉, z-index를 논의할 때 z-index가 어떤 스택 컨텍스트인지 설명해야 합니다. 예시에서와 같이 -9999가 10보다 작더라도 d4:box와 d1:box는 서로 다른 스태킹 컨텍스트에 있기 때문에 어느 상자가 사용자에게 더 가까운지 판단하는 것은 불가능합니다.

3. 계단식 규칙             

쌓기 규칙은 어떤 상자가 사용자에게 더 가까운지 결정하는 것입니다. 1. 상자는 동일한 스태킹 컨텍스트에 속하며 동일한 Z-색인을 갖습니다

규칙: 문서 트리의 상자에 해당하는 요소의 순서에 따르면 후자가 사용자에게 더 가깝습니다. 전자보다 (뒤에서 앞으로)

<!-- 两种情况下,d2均排在d1的后面,因此d2在z-axis上位于d1的上面 -->
<p>
  </p><p>
  </p>

2. 전제: 상자는 동일한 스태킹 컨텍스트에 속하고 다른 z-인덱스를 가집니다.


규칙: 더 큰 z-index 속성 값을 가진 상자 ​​​​사용자에게 더 가깝습니다

<!-- d1的z-index为12,而d2的z-index为0,所以d1在d2的上面 -->
<p>
</p>
<p>
</p>

3. 전제: 상자는 서로 다른 스태킹 컨텍스트에 속하며 스태킹 컨텍스트에는 손자/아버지-아들 관계가 없습니다


      规则:boxes会向上沿着父box进行搜索,直到父boxes属于同一个stacking context为止,然后比较父boxes的z-index属性值,z-index属性值大的box更靠近用户。


<p>
  </p><p>
    </p><p>d3</p> 
  
  <p>d2</p>
  <p>d3</p>

  4. 前提:boxes属于不同的stacking context,并且stacking contexts为祖孙/父子关系

      规则:属于子stacking context的box必定更靠近用户


<p>
  </p><p></p>

  5. 前提:boxes属于相同的stacking context,并且两者都是non-positioned element。

      规则:float:left|right的元素必定更靠近用户

 

四、z-index的作用                        

  啰嗦一句:同一个stacking context的z-index才具有可比性,也就是说在讨论z-index时必须带说明是哪个stacking context下的z-index。

  它有两个作用:1. 设置box在其所属的stacking context下的stack level;

                      2. 当z-index属性值非0时,则在该box中创建一个新的stacking context,而该box的子孙box默认属于这个新stacking context。

  注意:z-index的默认值为auto,自动赋值为0。因此默认情况下不会创建新的stacking context。

  z-index生效的阀门

    z-index属性值仅对positioned box生效,而non-positioned box的z-index永远为0。

    也许你会举出如下反例:


<p></p>
<script>
  console.log(window.getComputedStyle(document.getElementById(&#39;d1&#39;))[&#39;zIndex&#39;]); // 输出10</script>

    但抱歉的是,上面获取的是non-positioned element p#d1的z-index属性值,而不是non-positioned box的z-index属性值。

    对于positioned element,它会将z-index赋予给对应的positioned box,而non-positioned element则不会。

 

五、兼容性问题——IE6/7的诡异行为                

  IE6、7中并非当positioned box并且z-index不为0时才创建stacking context,而是positioned box就会创建stacking context。


<style>
    .parent{width:200px; height:200px; padding:10px;}
    .sub{text-align:right; font:15px Verdana;width:100px; height:100px;}
    .lt50{left:50px;top:50px;}</style>
 
<p>
  </p><p>20</p>
  <p>10</p>

 
<p>
  </p><p>2</p>
  <p>1</p>

  符合W3C标准的渲染效果:

  IE6、7下的渲染效果:

 

六、总结                            

  若有纰漏请大家指正,谢谢! 

  尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/4333164.html  ^_^肥仔John  

 

七、参考                            

说说标准——CSS核心可视化格式模型(visual formatting model)之十三:分层的显示(Layered presentation) 

z-index 默认值引起的兼容性问题

W3C Recommendation-Layered presentation

위 내용은 CSS Magic Hall: Z-색인을 정말로 이해하고 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
'Podcast 구독'링크는 어디에서 링크해야합니까?'Podcast 구독'링크는 어디에서 링크해야합니까?Apr 16, 2025 pm 12:04 PM

한동안 iTunes는 팟 캐스팅에서 큰 개 였으므로 "Podcast 구독"을 링크 한 경우 다음과 같습니다.

브라우저 엔진 다양성브라우저 엔진 다양성Apr 16, 2025 pm 12:02 PM

우리는 그들이 2013 년에 크롬에 갔을 때 오페라를 잃었습니다. 올해 초 크롬 (Chrome)에 갔을 때 Edge와 같은 거래를했습니다. Mike Taylor는 이러한 변화를 "감소 적으로"불렀습니다

웹 공유에 대한 UX 고려 사항웹 공유에 대한 UX 고려 사항Apr 16, 2025 am 11:59 AM

Trashy Clickbait 사이트에서 가장 8 월 출판물에 이르기까지 공유 버튼은 웹 전체에서 오랫동안 어디서 유비쿼터스되었습니다. 그럼에도 불구하고 이것들은 논쟁의 여지가 있습니다

Weekly Platform News : Apple은 웹 구성 요소, 프로그레시브 HTML 렌더링, 자체 호스팅 중요한 리소스를 배포합니다.Weekly Platform News : Apple은 웹 구성 요소, 프로그레시브 HTML 렌더링, 자체 호스팅 중요한 리소스를 배포합니다.Apr 16, 2025 am 11:55 AM

이번 주에 Apple은 웹 구성 요소, Instagram이 Insta-Loading 스크립트의 방법 및 자조적 자체 호스팅 리소스를 생각하기위한 음식을 웹 구성 요소에 들어갑니다.

Git Pathspecs 및 사용 방법Git Pathspecs 및 사용 방법Apr 16, 2025 am 11:53 AM

GIT 명령의 문서를 살펴 보았을 때 많은 사람들이 옵션이 있음을 알았습니다. 나는 처음에 이것이 단지 a라고 생각했다

제품 이미지를위한 컬러 피커제품 이미지를위한 컬러 피커Apr 16, 2025 am 11:49 AM

어려운 문제가 어려운 것 같지 않습니다. 우리는 종종 수천 가지 색상의 제품 샷을 가지고 있으므로 우리는 다음과 같이 뒤집을 수 있습니다. 우리도 아닙니다

Dark Mode는 React 및 Temprovider로 전환합니다Dark Mode는 React 및 Temprovider로 전환합니다Apr 16, 2025 am 11:46 AM

웹 사이트에 어두운 모드 옵션이있을 때 좋아합니다. 다크 모드는 웹 페이지를 더 쉽게 읽을 수있게하고 눈이 더 편안하다고 느끼도록 도와줍니다. 많은 웹 사이트를 포함합니다

HTML 대화 요소와 함께 일부 실습HTML 대화 요소와 함께 일부 실습Apr 16, 2025 am 11:33 AM

이것은 처음으로 HTML 요소를보고 있습니다. 나는 그것을 잠시 동안 알고 있었지만 아직 스핀을 위해 그것을 가져 갔다. 그것은 꽤 시원하고 있습니다

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.