你的位置:首页 > 网页设计

[网页设计]关于stacking context和CSS z


HTML中决定元素叠加顺序的CSS属性最有名的应该是z-index了。但是,往往在项目中发现有些情况和我们的预期不太一致。经过研究和学习,总算搞清楚了其中的关系。简单总结如下: 

  1. 只有Positioned(Position不为static的元素)元素的z-index属性才有效
  2. z-index可以是负数
  3. 没有z-index或z-index无效的元素(参见第一条)相当于z-index为0;
  4. 符合某些条件的元素,浏览器会为它们创建一个叫stacking context的东东。根据DOM树结构,stacking context也会形成一个树形结构。
  5. 一个stacking context中的元素会根据z-index决定叠加顺序。z-index大的靠前
  6. z-index 0级元素中,有stacking context的元素的叠加顺序靠前 
  7. 以上条件不能区分时,使用DOM树中的顺序决定叠加顺序。

其中细节很多,我也不确定自己的理解都是正确的。欢迎大家指正。

另外,下面是MDN中的一系列相关文章。逐层展开,写得很清楚,各位做WEB的同学可以学习一下。

  • Stacking without z-index : Default stacking rules
  • Stacking and float : How floating elements are handled
  • Adding z-index : Using z-index to change default stacking
  • The stacking context : Notes on the stacking context
  • Stacking context example 1 : 2-level HTML hierarchy, z-index on the last level
  • Stacking context example 2 : 2-level HTML hierarchy, z-index on all levels
  • Stacking context example 3 : 3-level HTML hierarchy, z-index on the second level