关于z-index的详细解释

对于z-index总是无法琢磨,通过简单的小栗子,一步一步的揭开它的面纱

测试的浏览器:IE,chrome

html部分:

  <div id="no-style">
       <div id="div1" class="test-div" style="background:#0c8484;">11111
           <div id="test-position" class="has-position-absolute">11111的子元素</div>
       </div>
       <div id="div2" class="test-div" style="background:#885429;">22222
       </div>
   </div>

下面是css部分,一步一步的添加属性,查看效果

1、无浮动定位,不设置z-index值
结论:子高于父

     .test-div{
            width:300px;
            height:300px;
            border:2px blue solid;
            }
    .has-position-absolute{
            width:200px;
            height:200px;
            border:2px red solid;
        }

子元素在父元素上面

2、设置position:absolute;二者重叠;
结论:后者高于前者;

      .test-div{
            width:300px;
            height:300px;
            border:2px blue solid;
            position:absolute;

        }
        .has-position-absolute{
            width:200px;
            height:200px;
            border:2px red solid;
        }

div2盖住了div1

3、直接给div1中的子元素添加z-index:30;
结论:比较同级元素div1和div2的z-index值(没有自定义),div2后者居上;
效果图同上,依旧是div2盖住了div1(整个元素,包括它的子元素);

      .test-div{
            width:300px;
            height:300px;
            border:2px blue solid;
            position:absolute;

        }
        .has-position-absolute{
            width:200px;
            height:200px;
            border:2px red solid;
            z-index:30;
        }

4、给div1设置z-index:20;高于div2
结论:兄元素的z-index值高,则兄元素高于弟元素;

            .test-div{
            width:300px;
            height:300px;
            border:2px blue solid;
            position:absolute;

        }
        .has-position-absolute{
            width:200px;
            height:200px;
            border:2px red solid;
            z-index:30;
        }
     #div1{
            z-index:20;
        }

div1盖住了div2

5、给div2也设置了z-index:25;大于div1,小于div1的子元素
结论:追溯到同级元素,即兄弟元素的比较,div2大,所以还是div2盖住div1
效果图同步骤2中的效果图,div2盖住了div1;

        .test-div{
            width:300px;
            height:300px;
            border:2px blue solid;
            position:absolute;

        }
        .has-position-absolute{
            width:200px;
            height:200px;
            position:relative;
            z-index:30;
        }
      #div1{
            z-index:20;
        }
      #div2{
            z-index:25;
        }

总结:

1、默认值:z-index在ie下默认为z-index:0;而FF下则默认为z-index:auto;
可以自己开头对全局进行设置,z-index:0;

2、正常情况下:兄弟(同级)元素后者居上,父子之间子高于父;(没有设置定位浮动的情况下)

3、对于定位元素,(不管ie还是FF)非同级关系和非父子元素关系之间的z值大小(在z轴上的值)比较,
需要回溯至其为兄弟关系的两个祖先元素上,先比较这两个元素的z-index值,只有当“兄”(前者)
的z-index大于“弟”的z-index值,“兄”的各个后代元素,才能盖过“弟”元素及其后代元素。

4、对于IE,元素的z-index默认为0,如果不另外设置“兄”,“弟”元素的z-index值,那么“兄”的
z-index就无法大于“弟”的z-index。那么“兄”元素及其子孙就无法盖过“弟”元素及其子孙。
而对于FF,元素的z-index的默认值为auto,auto自动,表示“随便,不管我的事”;那么子孙的
z值等级就只跟他们本身的z-index的值有关。

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
z-index 是 CSS 属性,用于控制元素的垂直堆叠顺序(层级)。它可以指定元素在堆叠上下文中的显示顺序,具有较高 z-index 值的元素会覆盖较低 z-index 值的元素。 要使用 z-index,你需要先确保元素的 position 属性值为 relative、absolute 或 fixed,因为 z-index 只对定位元素有效。 以下是 z-index详细使用方法: 1. 指定 z-index 值: 可以通过在 CSS 中为元素设置 z-index 属性来指定其层级顺序。例如: ```css .element { position: relative; z-index: 2; } ``` 2. 比较 z-index 值: 当多个元素的 z-index 值相同时,它们的层级顺序将由它们在 HTML 结构中的位置决定。靠后的元素将覆盖靠前的元素。 3. 负值 z-index 值: z-index 值也可以是负数,负值会使元素位于正值 z-index 值的下方。例如: ```css .element { position: relative; z-index: -1; } ``` 4. 父元素的 z-index 影响子元素: 如果一个父元素的 z-index 值较高,那么其子元素的 z-index 值较低的元素也可能会覆盖其他同级元素。但是,子元素的 z-index 值不会超过其父元素的 z-index 值。 5. 层叠上下文(stacking context): 层叠上下文是一个独立的渲染环境,它的特点是拥有自己的层级顺序。当给一个元素设置 z-index 时,该元素会创建一个新的层叠上下文。层叠上下文中的元素与其他层叠上下文中的元素进行比较时,z-index 值才会生效。 需要注意的是,z-index 只对定位元素有效,对于静态定位(position: static)的元素是无效的。 希望这些信息对你有所帮助!如果你还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值