详解CSS层叠上下文(解析z-index不生效的原因)

  1. 为什么会有层叠上下文

在CSS2.1规范中,每个盒模型的位置是三维的,分别是平面画布上的X轴,Y轴以及表示层叠的Z轴。一般情况下,元素在页面上沿X轴Y轴平铺,我们察觉不到它们在Z轴上的层叠关系。而一旦元素发生堆叠,这时就能发现某个元素可能覆盖了另一个元素或者被另一个元素覆盖。

  1. 如何产生层叠上下文
    一般来讲有3种方法

(1) html中的根元素本身就是层叠上下文,成为根层叠上下文
(2)position属性为非static值并设置z-index属性为具体数值
(3)一些CSS3属性也能产生层叠上下文

  • 一个 flex 元素(flex item),且 z-index 值不为 “auto”,也就是父元素 display:flex|inline-flex 元素
  • opacity 属性值小于 1
  • 元素的transform 属性值不为 “none”
  • 元素的mix-blend-mode 属性值不为 “normal”
  • 元素的 isolation 属性被设置为 “isolate”
  • 在 mobileWebKit 和 Chrome 22+ 内核的浏览器中,position: fixed 总是创建一个新的层叠上下文, 即使 z-index的值是 “auto”
  • 在 will-change 中指定了任意 CSS 属性,即便你没有定义该元素的这些属性
  • 元素的 -webkit-overflow-scrolling 属性被设置 “touch”
    在这里插入图片描述
  1. 不生效的主要原因
    单独使用时不生效,一定要配合定位属性一起,即只对指定了position属性的元素生效——只要不是默认值static,其他的absolute、relative、fixed都可以使z-index生效。(在CSS3之后,弹性元素的子元素也可以生效)
    参考文章:
    为什么我写的z-index不生效?
    z-index不生效?让我们来掀开它的面具
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
z-indexCSS属性之一,用于控制元素在层叠上下文中的显示顺序。未设置z-index属性的元素会采用默认值0,而设置了z-index属性的元素可以通过属性值的大小来确定其层级关系。 当设置了z-index属性的元素的属性值大于0时,该元素的层级会高于未设置z-index属性的元素。这意味着具有较高属性值的元素会覆盖在较低属性值的元素之上。 然而,z-index受限于层叠上下文的影响。即使一个元素具有较高的z-index属性值,但如果它所属的层叠上下文z-index值小于其他元素所属层叠上下文z-index值,那么它仍然会处于下方。因此,层叠上下文z-index值比元素自身的z-index值更重要。 另外,当设置了z-index属性的元素的属性值为0时,它与未设置z-index属性的元素层级相同,遵循后面的元素覆盖前面元素的规则。 总结来说,z-index属性用于控制元素在层叠上下文中的层级关系,较高的属性值会覆盖较低的属性值,但受限于层叠上下文的影响。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [CSSz-index 属性详解](https://blog.csdn.net/weixin_45092437/article/details/126493240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [CSS深入理解z-indexz-index相关知识总结)](https://blog.csdn.net/qq_41000891/article/details/110005863)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值