层叠上下文是css中的一个三维概念,拥有层叠上下文的元素在z轴上比普通元素要高,而且其内部的所有内容是自成体系的,其后代都是在它的层叠顺序中

哪些元素拥有层叠上下文

1、根元素,也就是html默认拥有“根层叠上下文”

2、定位元素(position: absolute/relative/fixed)的z-index不为auto,而是有具体数值时

3、拥有某些css3属性的元素

  • z-index不为auto的 flex item
  • opacity的值小于1的元素
  • transform不为none
  • filter不为none
  • isolation的值是isolate
  • mix-blend-mode不为normal
  • 设置了will-change
  • 元素的-webkit-overflow-scrolling设为touch.

举个例子,如一个opacity:0.6的元素是层叠上下文,在一个普通元素的上面

  1. <div style="background: blue; opacity: 0.6;">div1</div>
  2. <div style="background: red; margin-top: -80px">div2</div>

上面只是一个比较简单的规则,在实际中有各种元素,那在css中不同元素的层叠顺序是怎样的呢?

css中元素的层叠顺序

css中的元素的层叠顺序,自底向上,遵循如下排列规则:

  1. border/background等装饰在最下面
  2. 接着是z-index为负的元素
  3. block块状水平盒子元素
  4. float盒子元素
  5. inline、block-inline元素
  6. z-index为auto/0、不依赖z-index的层叠上下文元素
  7. z-index为正的元素

这个规则不用死记硬背,结合每种元素的作用便很好理解&记忆了

  • border和background通常用作装饰,所以优先级最低,接着是z-index为负的元素
  • block盒子和float通过用来定位布局,而inline通常是重要的文本内容,所以有消极比block和float高
  • 接着就是z-index为0或auto的元素或没有z-index的普通层叠上下文元素了
  • 最高的就是z-index为正的元素了

按照上面的层叠顺序,如有冲突的话,遵循这两个规则即可:

1、z-index大者居上

2、后来者居上

z-index

z-index定义了元素在z轴上的顺序,值越大,元素的层级越高越靠上。但需要注意的是:z-index只有在定位元素和flex item上才生效,在其他元素是即便设置了也没有用。

如下,两个层叠上下文,第一个的z-index大,但第一个还是在下面:

  1. <div style="background: blue;transform: translateX(50px);z-index: 5">div1</div>
  2. <div style="background: red;transform: translateY(-80px);z-index: 1">div2</div>

而且元素一旦拥有定位,其z-index就会生效,auto被视为0级别(但实际上不是0,只是视为,此时元素还不是层叠上下文),flex item元素同理。

所以即便一个元素只设置了定位,还不是层叠上下文,但是此时该元素的z-index已经被视为0了,所以该元素会在普通元素的上面。

参考:

css 层叠上下文和层叠顺序的更多相关文章

  1. 深入理解CSS中的层叠上下文和层叠顺序(转)

    by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道 ...

  2. 深入理解CSS中的层叠上下文和层叠顺序

    零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在C ...

  3. 关于css的层叠上下文和层叠顺序问题

    关于css的层叠上下文和层叠样式问题 最近在项目中遇到了一个让我欲仙欲死的问题,我给项目中的图片设置了一个淡入效果,几opacity变化,但当我在它的上面有一个定位元素时,动画结束后,定位元素居然被遮 ...

  4. [转]深入理解CSS中的层叠上下文和层叠顺序

    http://www.zhangxinxu.com/wordpress/2016/01/understand-css-stacking-context-order-z-index/ 零.世间的道理都是 ...

  5. CSS中的层叠上下文和层叠顺序

    一.什么是层叠上下文和层叠水平 层叠上下文和层叠水平有一点儿抽象.我们可以吧层叠上下问想象成一张桌子,如果有另一个桌子在他旁边,则代表了另一个层叠上下文. Stacking context 1由文件根 ...

  6. css层叠上下文和层叠顺序

    普通元素的层叠水平优先由层叠上下文决定,因此,层叠水平的比较只有在当前层叠上下文元素中才有意义. 诸位千万不要把层叠水平和CSS的z-index属性混为一谈.没错,某些情况下z-index确实可以影响 ...

  7. css之层叠上下文和层叠顺序

    大家在写网页的时候会不会经常遇到莫名奇妙的样式问题,比如谁覆盖了谁.也找不出原因,为什么z-index高的却没有覆盖掉z-index低的元素呢? 带着这些疑问.我做了个小实验.代码如下: <st ...

  8. 彻底搞懂CSS层叠上下文、层叠等级、层叠顺序、z-index

    前言 最近,在项目中遇到一个关于CSS中元素z-index属性的问题,具体问题不太好描述,总结起来就是当给元素和父元素色设置position属性和z-index相关属性后,页面上渲染的元素层级结果和我 ...

  9. 20190409-层叠の层叠上下文、层叠水平、层叠顺序、z-index、伪元素层叠

    写在前面乱七八糟的前言: 此"八卦"的源于,在写下图这个圆滚滚的导航布局时,使用元素及其伪元素加上绝对定位完成,但遇到:before或:after伪元素与元素的层叠顺序,就是伪元素 ...

随机推荐

  1. 活动识别API服务开发

    活动识别API服务开发 要使用华为活动识别服务API,需要确保设备已经下载并安装了HMS Core(APK),并将Location Kit的SDK集成到项目中. 指定应用权限 在Android Q以下 ...

  2. 现代传感器的接口:中断驱动的ADC驱动程序

    现代传感器的接口:中断驱动的ADC驱动程序 Interfacing with modern sensors: Interrupt driven ADC drivers 研究了如何编写一个阻塞的模数转换 ...

  3. Redis系列(五):消息队列

    消息队列已经成为现在互联网服务端的标配组件,现在比较常用的消息中间件有RabbitMQ.Kafka.RocketMQ.ActiveMQ.说出来你可能不信,Redis作为一个缓存中间件,居然也提供了消息 ...

  4. (5)使用自定Web根目录

    调整 Web 站点 http://server0.example.com 的网页目录,要求如下: 1) 新建目录 /webroot,作为此站点新的网页文件根目录 # mkdir /webroot # ...

  5. Java面试指北!13个认证授权常见面试题/知识点总结!| JavaGuide

    大家好,我是 Guide哥!端午已过,又要开始工作学习啦! 我发现有很多小伙伴对认证授权方面的知识不是特别了解,搞不清 Session 认证.JWT 以及 Cookie 这些概念. 所以,根据我根据日 ...

  6. 【NX二次开发】Block UI RGB颜色选择器

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  7. 【Azure 机器人】微软Azure Bot 编辑器系列(3) : 机器人对话流中加入帮助和取消按钮功能 (The Bot Framework Composer tutorials)

    欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...

  8. 空指针的解决方案Optional包装类

    有道云笔记地址 (建议有道云打开,markdown文档,直接拷贝过来有一些问题) 引言 在java的开发中,有一个问题始终会伴随着开发的进程.记得我第一个项目的时候,有一个同事在评论我的代码的时候说到 ...

  9. Java JDK 动态代理(AOP)使用及实现原理分析

    一.什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 代理模式U ...

  10. 必看!LuatOS自定义C库全新教程,一文极速上手

    今天继续讲LuatOS的开发,上一期简单说了一下如何移植LuatOS,相信很多朋友已经看过了.那么今天,我就开始讲C和Lua调用的部分教程. LuatOS相关资料及Lua语言的官方定义,详见以下链接: ...