css12.高度塌陷问题

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <style type="text/css">
            .box1{
                /* 为box1指定边框 */
                border: 10px red solid;
                /* 
                    开启BFC以后,有以下特性
                        1.父元素的垂直外边距不会和子元素重叠
                        2.开启BFC的元素不会被浮动元素覆盖
                        3.开启BFC的元素可以包含浮动的子元素
                    开启方法:
                        1.设置元素浮动   //float: left;
                            -使用此方法开启,会撑开父元素,但是会导致父元素宽度丢失
                                而且使用这种方法会导致下边元素上移
                        2.设置元素绝对位置   
                        3.设置元素为inline-block        //display:inline-block;
                            -使用此方法开启,会撑开父元素,但是会导致父元素宽度丢失
                        4.将元素的overflow设置为一个非visible

                        推荐方式:将overflow设置为hidden(auto)是副作用最小的方式
                */
                /* 解决高度塌陷的方法 */
                overflow: hidden;

                /* IE6一下 */
                /* zoom:1; */
            }

            .box2{
                width: 100px;
                height: 100px;
                background-color: pink;
                /* 
                    在文档流中,父元素高度默认被子元素撑开
                    也就是子元素多高,父元素多高
                    但是当子元素设置浮动之后,子元素会完全脱离文档流,导致父元素高度塌陷
                    由于父元素高度塌陷,父元素下面元素上移,造成页面混乱
                */
                float: left;
            }
            .box3{
                height: 100px;
                background-color: rosybrown;
}
        
        </style>


    </head>
        
    <body>
        <div class="box1">
            <div class="box2"></div>
        </div>

        <div class="box3"></div>
    </body>


</html>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <style type="text/css">
            .box1{
                width: 100px;
                height: 100px;
                background-color: teal;
                float: left;
            }
            .box2{
                width: 200px;
                height: 200px;
                background-color: skyblue;
                /* 
                    我们希望清掉box1浮动造成的影响,我们用clear来清除浮动
                    clear可以用来清除其他浮动元素对当前元素的影响
                    可选值:
                        none:无操作
                        left:清除左侧浮动元素对当前元素影响
                        right:清除右侧浮动元素对当前元素影响
                        both:清除两侧浮动元素对当前元素影响
                                其实是清除对他影响最大元素
                    清除浮动,box2位置不变

                */
                float: right;
            }
            .box3{
                width: 300px;
                height: 300px;
                background-color: aqua;
                clear: both;
            }
            /* 
                解决高度塌陷方案二
                    可以直接在高度塌陷父元素最后,添加一个空白div
                    由于这个div没有浮动,所以它可以撑开父元素的高度
                    然后对他清除浮动,通过这个空白div清除浮动
             */
             /* https://www.bilibili.com/video/av21557880?p=64 */

             /* .box1:after{
                 content: "hello";
             } */
        </style>


    </head>
        
    <body>
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
    </body>


</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值