深度解析height:0px,overflow:hidden和display:none以及visibility:hidden的区别

overflow:hidden这个不会被继承

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .box1{
                width:200px;
                height:500px;
                background-color: #bfa;
                position:relative;
                overflow:hidden;
            }
            .box2{
                width:200px;
                height:700px;
                background-color: pink;
                position:absolute;
                left:50px;
            }
            .box3{
                width:200px;
                height:800px;
                background-color: silver;
                position:absolute;
                left:100px;
            }
        </style>
    </head>
    <body>
        <div class="box1">
            <div class="box2">
                <div class="box3"></div>
            </div>
        </div>
    </body>
</html>

在这里插入图片描述

overflow这个属性虽然不会被其子元素所继承,但是从图中可以看出来不管.box2是否脱离文档流,但是,只要在box1中设置overflow:hidden后,.box2的高度就被限制了,而且会发现.box3虽然是.box2的子元素,但是高度也被限制了,这说明了overflow:hidden对其后代元素也是生效的,一定要注意属性该写在哪个元素里面,这个要好好想想,在运用的时候,也要好好想想

在这里插入图片描述

height:0px

在这里插入图片描述
在这里插入图片描述

height:0px,这个属性不会被继承,因此,会看到因为box1因为没有高度,就导致看不了其背景色,但是这丝毫不影响,.box1的子元素和其后代元素的显示

display:none,就是什么都没有

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .box1{
                width:200px;
                height:500px;
                background-color: #bfa;
                position:relative;
                display:none;
            }
            .box2{
                width:200px;
                height:700px;
                background-color: pink;
                position:absolute;
                left:50px;
            }
            .box3{
                width:200px;
                height:800px;
                background-color: silver;
                position:absolute;
                left:100px;
            }
        </style>
    </head>
    <body>
        <div class="box1">
            <div class="box2">
                <div class="box3"></div>
            </div>
        </div>
    </body>
</html>

在这里插入图片描述

在这里插入图片描述

从上面,可以看出display:none虽然不会被继承,但是只要在某个元素中设置了display:none;不管是该元素还是该元素的子元素或者是该元素的后代元素,都不会显示,而且也不会占据文档的任何位置

display:none的效果,可以看做是height:0px和overflow:hidden效果的叠加(如下图所示)

在这里插入图片描述

这一点在小米商城中的下载APP那里的下拉二维码中和过渡(transition)效果一起使用过

visibility:hidden和display:none的区别,之前提到过,现在就不说了

在写属性时,可以思考,这个属性的意思是什么,有什么作用,这个属性应该写在哪里,这个属性会不会被继承等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值