css - 为什么父元素设置 float 后子元素 z-index 失效?

查看:114
本文介绍了css - 为什么父元素设置 float 后子元素 z-index 失效?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我想通过设置.mask-layer:{ position: absolute; z-index: 9;}遮住img,但是父元素.mask-layer-show设置为float后 子元素z-index就失效了,是什么问题?

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
</head>

<body>
    <div class="box">
        <div class="mask-layer-show">
            <a href="#"><img src="img/product04.png" alt=""></a>
            <div class="mask-layer">

            </div>
        </div>
        <div class="mask-layer-show">
            <a href="#"><img src="img/product04.png" alt=""></a>
            <div class="mask-layer">
            </div>
        </div>



    </div>
    <style media="screen">
    .box{
        width: 1000px;
        height: 720px;
    }
    .box .mask-layer-show{
        float: left;
        width: 500px;
        height: 360px;
        position: relative;
    }
    .mask-layer{
        //遮罩层
        width: 500px;
        height: 360px;
        border: 1px solid red;
        position: absolute;
        z-index: 9; 
        background-color: #CCCCCC;
    }
    </style>
</body>

</html>

解决方案

  • 1.代码注释错误
    在css中注释代码 使用的是 /遮罩层/

  • 2.在.mask-layer中,因为你加了定位position,是元素脱离了文档流,所以要指定它的位置,机left,top

 .mask-layer{
        /*    遮罩层*/
        width: 500px;
        height: 360px;
        border: 1px solid red;
        position: absolute;
        left:0;
        top:0;
        z-index: 9; 
        background-color: #CCCCCC;
    }

  • 3.遮罩不建议用纯色,建议用rgba

  • 4.展示效果

  • 5.附代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        .box{
            width: 1000px;
            height: 720px;
            margin: 0 auto;
        }
         .box .mask-layer-show{
            float: left;
            width: 500px;
            height: 360px;
            position: relative;
            z-index: 1;
        }
        .box .mask-layer-show a{
            display: block;
            width: 500px;
            height: 360px;
            overflow: hidden;
        }
        .mask-layer{
            /* 遮罩层*/
            width: 500px;
            height: 360px;
            border: 1px solid red;
            position: absolute;
            left:0;
            top:0;
            z-index: 9; 
            background:rgba(0,0,0,.5);
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="mask-layer-show">
            <a href="#"><img src="img/1.png" alt=""></a>
            <div class="mask-layer">
    
            </div>
        </div>
        <div class="mask-layer-show">
               <a href="#"><img src="img/1.png" alt=""></a>
            <div class="mask-layer">
                
            </div>
        </div>
    </div>
</body>
</html>

这篇关于css - 为什么父元素设置 float 后子元素 z-index 失效?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆