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

原有一dom结构如下:

 <div class="box">
        <div class="top">
        </div>
        <div class="bottom">
            <ul>
                <li>
                    <div class="cover"></div>
                </li>
                <li>
                    <div class="cover"></div>
                </li>
            </ul>
        </div>
    </div>

其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,如下:

        <div class="top">
            <ul>
                <li></li>
                <li></li>
            </ul>
        </div>
        .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值父元素的比较(或者说“仅拼爹”)。

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,805评论 1 92
  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 1,619评论 0 6
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,712评论 1 45
  • (这是15年初学css时记的笔记) 选择器 简单选择器 标签选择器 直接把标签名加前面。 类选择器 用.+ cla...
    burningalive阅读 1,022评论 0 0
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 4,068评论 0 0