z-index:关于值大被值小覆盖的问题

原有一dom结构如下:

 

其css部分如下:

        .top{
            position: relative;
            width: 100%;
            height: 40px;
            background-color: antiquewhite;
            z-index: 1;
        }
        /*省略部分代码*/
        .bottom{
            width: 100%;
            height: 200px;
            background-color: aliceblue
        }

        .bottom ul{
            width: 100%;
            height: 100%;
        }

        .bottom ul li{
            position: relative;
            width: 80%;
            height: 30px;
            margin-bottom: 2px;

        }

        .bottom ul li .cover{
            position: absolute;
            width: 100%;
            height: 100%;
            top:0;
            left: 0;
            z-index: 3;
            background-color: aquamarine;
        }
原样式

想在top中添加一个相对定位ul,如下:

        
        .top ul{
            position: absolute;
            width: 80%;
            left: 20px;
            top:10px;
            z-index: 4;
        }

        .top ul li{
            width: 80%;
            height: 30px;
            margin-bottom: 2px;
            background-color: blueviolet;
        }

期望是这个样子的:


预期效果

然而得到的结果是这个样子的:


开始结果

在浏览器中查看top中的ulz-index值为4

`top`里的`ul`样式

bottom中的coverz-index值为3

`bottom`下的`cover`

当元素之间重叠的时候,z-order 决定哪一个元素覆盖在其余元素的上方显示。 通常来说 z-index 较大的元素会覆盖较小的一个。

按照上面的理论来说,topul应该显示在上面,然后实际情况却相反。甚至topulz-index值设置成 999 还是依旧在下面,那么问题出现在哪里呢?是否和其父元素的z-index值有关呢?

`top`

此处topz-index值为1,将其改为4,OK;将其改为3,则否。而无论怎么修改topulz-index值都不会影响到结果。

此处可以将topbottom下的cover看做是同一层级的比较,z-index值相同时,后面的覆盖前面的;不同时,值大的覆盖值小的。

另一方面,将bottom设置成如下:

`bottom`

发现topul依旧被bottom下的cover覆盖,无论coverz-index值是否为-1

由此可知:在同一个dom元素下(如这里的box),两个元素的z-index值的比较,实际是其设置了z-index值父元素的比较(或者说“仅拼爹”)。

你可能感兴趣的:(z-index:关于值大被值小覆盖的问题)