美文网首页CSS
[CSS] fixed 子元素的 z-index

[CSS] fixed 子元素的 z-index

作者: 何幻 | 来源:发表于2019-04-01 15:31 被阅读6次

1. 现象

下拉框设置了 z-index1000,却没有遮住底下 z-index5 的内容。

1.1 最简示例

(1)HTML

<div class="fixed">
    <div class="dropdown">
        z-index: 1000;
    </div>
</div>
<div class="error">
    z-index: 5;
</div>

(2)CSS

body {
    margin: 0;
}

.fixed {
    position: fixed;

    z-index: 3;
}

.dropdown {
    position: absolute;
    background: gray;
    width: 300px;
    height: 300px;

    z-index: 1000;
}

.error {
    position: absolute;
    background: red;
    width: 100px;
    height: 100px;
    left: 250px;
    top: 250px;

    z-index: 5;
}

1.2 效果

其中灰色部分表示下拉框,z-index1000
红色部分,z-index5

2. 原因

Chrome 22 之后positionfixed的元素会创建一个新的层叠上下文(stacking context),
而子元素的 z-index 值,只在父级层叠上下文中才中有意义。

Importantly, the z-index values of its child stacking contexts only have meaning in this parent.

Everyone knows and loves the z-index for determining depth ordering of elements on a page. Not all z-indexes are created equal, however: an element's z-index only determines its ordering relative to other elements in the same stacking context.

Within a local stacking context, the z-index values of its children are set relative to that element rather than to the document root. Layers outside of that context — i.e. sibling elements of a local stacking context — can't sit between layers within it.

3. 修复方案

.fixed {
    ...
    z-index: 6;
}

参考

Stacking Changes Coming to position:fixed elements
The Stacking Context
CSS stacking contexts: What they are and how they work

相关文章

  • [CSS] fixed 子元素的 z-index

    1. 现象 下拉框设置了 z-index 为 1000,却没有遮住底下 z-index 为 5 的内容。 1.1 ...

  • CSS踩坑

    CSS 踩坑 父级元素transform属性会使子元素的fixed定位失效。 具体参考

  • css之z-index属性

    ** z-index只对定位元素有用(relative/absolute/fixed/sticky)** 如果定位...

  • CSS深入理解之z-index 笔记

    z-index 与 css 定位属性 z-index 只对定位元素有作用。 如果定位元素z-index没有发生嵌套...

  • z-index属性不起作用

    z-index只能在position属性值为relative或absolute或fixed的元素上有效

  • css

    z-index只适用于已定位的元素:即拥有relative、absolute或者fixed的元素。所以z-inde...

  • css定位

    css布局是在平面内的,而定位是垂直于屏幕的。z-index:1/2/3>定位元素>文字>浮动元素>块级子元素>b...

  • 层叠上下文与层叠顺序-Z-index

    CSS中Z-index属性 z-index属性的定义是设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序...

  • 元素层级和背景

    元素的层级 z-index 设立层级 没有开启,是不能使用z-index 子元素层级再高也永远盖不住父元素 元素的...

  • z-index相关

    如果不考虑css3,只有定位元素的z-index才有作用。 如果定位元素z-index没有发生嵌套:1、后来居上的...

网友评论

    本文标题:[CSS] fixed 子元素的 z-index

    本文链接:https://www.haomeiwen.com/subject/burvbqtx.html