CSS 中元素叠放顺序的规则细究

  • 当不包含z-index属性和position属性时,所有元素的叠放顺序与其所在HTML文档中出现的先后顺序一致。(使用负margin来重叠内联元素的特例除外。)
  • 当元素浮动float时,浮动块元素被放置于非定位块元素与定位块元素之间,换句话讲,浮动元素显示在普通流中的后代块元素之上,常规流中的后代行内元素之下。
  • 元素加入position位置属性时,所有具有position属性的元素及其子元素会显示在其他不具有position属性的元素上面。
  • z-index只在设置了position属性的元素上有效,没有position属性的元素上的z-index属性均不生效。

z-index属性产生堆叠上下文

拥有共同父元素的一组元素共同前移或者后移构成了一个堆叠上下文。每个堆叠上下文有一个单一的根元素,当元素上形成一个新的堆叠上下文时,堆叠上下文中的所有子元素按照堆叠顺序被局限在一个固定的区域内。一个堆叠上下文构成一个整体,其内部元素有相对不同的堆叠顺序,但与其他堆叠上下文比较时,只能整体上移或者下移。

通俗的讲,如果某个元素被置于其所在堆叠上下文的最底层,是没有办法让他显示在另一个拥有更高层的堆叠上下文元素之上的,哪怕将其z-index设置为无限大。

堆叠上下文的构成规则

  • 文档的根元素
  • 元素拥有position属性(除static属性之外),同时设置了为auto的z-index属性。
  • 元素拥有opacity属性,且取值小于1
  • 一些新的css属性,如filter、css-regions等需要离屏渲染的属性,均能使元素形成堆叠上下文。
  • 指定position:fixed的元素,技术z-index为auto

同一堆叠上下文内子元素的堆叠顺序

从底到上(root < -index < index-aotu < +index < position):

  1. 堆叠上下文的根元素。
  2. 设置了position属性,并且z-index为负的元素及其子素,z-index值较大的元素置于较小元素之上,同等属性值的元素按照html中出现的先后顺序堆叠。
  3. 没有设置position的元素。
  4. 设置了position属性,并且z-index属性为auto的元素.
  5. 设置了position属性,并且z-index属性为正值的元素。

不同堆叠上下文的情况

  • 堆叠上下文可以嵌入其他堆叠上下文。
  • 每个堆叠上下文和他的统计上下文是独立的。
  • 堆叠上下文中子元素按照前述顺序摆放。
  • 堆叠上下文内部的子堆叠上下文的z-index只在父堆叠上下文中有意义。

多么深奥 鲜为人至的知识领域 慢慢在实践中应用总结呗!

转载 :http://blog.csdn.net/u014346301/article/details/53484968

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,809评论 1 92
  • CSS 定位 CSS有三种基本的定位机制:普通流,浮动,绝对定位(absolute, fixed):普通流是默认定...
    _空空阅读 5,811评论 0 15
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,982评论 19 139
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,232评论 0 1
  • 人,都是喜欢听好话的。 仅仅是恭维倒也罢了,有时候明明假得我们自己都不信,不也半真半假地笑纳了? 那些逆耳的忠言,...
    我是张望好时光阅读 524评论 0 1