绝对定位中关于z-index的深入探索

层级问题描述

若只给一个元素添加定位,而其余元素没有定位,则定位元素会遮盖住没有定位的元素;但若所有的元素都添加了定位的话,默认的是后面的遮盖住前面的效果。

【问】如果不想让后面的定位元素遮盖前面的元素,怎么解决

  • 使用对象的层叠顺序属性z-index设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。

z-index属性说明

  • 该属性设置一个定位元素沿 z 轴的位置,z 轴定义为垂直延伸到显示区的轴。

  • 如果为正数,则离用户更近,为负数则表示离用户更远。

  • 取值

    属性值解释
    auto默认。堆叠顺序与父元素相等
    number设置元素的堆叠顺序
    inherit规定应该从父元素继承 z-index 属性的值
  • 元素可拥有的 z-index 属性值

  • z-index 仅能在已定位的元素上设置

  • 没有单位,数值越大,层级越高

父子盒子中绝对定位对z-index的影响

<!-- html部分 -->
<div class="father">
        father
        <div class="child">child</div>
</div>
/* css部分 */
.father{
    width: 200px;
    height: 200px;
    background: darkgreen;
    margin-bottom: 50px;
    /* 此时设置该属性没有作用,若想要父盒子覆盖在子盒子之上,则在子盒子中设置! */
    z-index: 1; 

    /* 使得子盒子以父盒子为参照 */
    /* position: relative;  */
        }

.child{
    width: 100px;
    height: 100px;
    background: salmon;
    top: 20px;
    left: 20px;

    /* 子盒子需要使用绝对定位才能设置z-index! */
    /* position: absolute;   */
    /* 此时子盒子被覆盖 */
    /* z-index: -1;  */
}

原因: 使用static 定位或无position定位的元素以及浮动的元素,设置z-index属性是无效的。

【扩展】我在浏览器中查询到的提示信息是这样的:
The position: static property prevents z-index from having an effect.
Try setting position to something other than static.
翻译过来就是:
这个位置:静态属性可防止 z-index 产生的影响。尝试将这个位置设置为静态以外的其他位置。

兄弟盒子中绝对定位对z-index的影响

<!-- html部分 -->
<div class="box1">box1</div>
<div class="box2">box2</div>
/* css部分 */
.box1{
    width: 200px;
    height: 200px;
    background: salmon;
    position: absolute;
    top:250px;
    left: 100px;
}
.box2{
    width: 200px;
    height: 200px;
    background: rgb(162, 20, 228);
    margin-bottom: 500px;
    position: absolute;
    top: 400px;
    /* 后来者居上,此时box2在box1上面 */
    left: 0px; 
    /* 设置box2在box1后面 */
    z-index: -1; 
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
z-indexCSS属性之一,用于控制元素的叠放次序。它可以设置为正整数、负整数或0,默认值为auto。数值越大,元素越靠上,即显示在其他元素的上面。如果多个元素的z-index相同,则按照它们在HTML文档的书写顺序,后面的元素会覆盖前面的元素。需要注意的是,只有使用了定位属性(如position: absolute或position: fixed)的元素才能使用z-index属性。 举个例子,假设有三个元素分别为f、g、h,它们都具有相同的.box类,并且使用了不同的背景颜色。如果我们想让间的元素在最上层,第一个元素在间层,可以给间元素的z-index设置一个较大的值(如2),给第一个元素的z-index设置一个较小的值(如1)。这样就可以控制它们的叠放顺序了。 请注意,定位的元素使用z-index属性时,会相对于其最近的具有定位属性的父元素进行叠放。如果没有找到具有定位属性的父元素,则会相对于HTML文档进行叠放。如果需要确保元素在整个页面的叠放顺序,可以给它们的父元素添加position: relative属性来创建一个新的定位上下文。这样可以更好地控制元素的叠放次序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [css的定位叠放次序z-index](https://blog.csdn.net/fighting_dream/article/details/113372192)[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_2"}}] [.reference_item style="max-width: 50%"] - *2* [定位叠放次序 z-index](https://blog.csdn.net/weixin_54418006/article/details/122280648)[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_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

憨憨憨羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值