解决父元素塌陷问题

题前寄语

我们在写代码的时候经常会遇到一些问题,这是不可避免的,而这也正好可以帮助我们查漏补缺。只有碰见问题,我们才会想办法去解决问题,这样下次遇到问题才能游刃有余。相信学过css的你们肯定已经有所了解。话不多说上代码。。。。

代码演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<style type="text/css">
    .box1 {
        background: red;
    }

    .kid {
        width: 100px;
        height: 100px;
        float: left;
    }

    .kid1 {
        background: yellow;
    }

    .kid2 {
        background: orange;
    }

    .box2 {
        width: 300px;
        height: 150px;
        background: blue;
        color: white;
    }
</style>

</head>



<body>
<div class="box1">
    <div class="kid kid1">子元素1</div>
    <div class="kid kid2">子元素2</div>
</div>
<div class="box2">box2</div>

</body>
</body>
</html>

我们期望的的结果

实际结果

通过结果我们不难发现,box1和box2同为块级元素,按标准文档流来,box2应该另起一行位于box1的下面一行,也就是位于子元素1和子元素2的下面。他们本来不应该有重叠的部分,但是box1和box2却跑到了子元素1和子元素所在区域的下面。造成这种状况的原因是父元素未设置高度,再加上子元素浮动导致父元素box1高度塌陷,父元素的高度无法把子元素包括在内。此时父元素高度为0,因为父元素未设置高度。这也导致box2仍然在box1高度为0的下面继续按标准文档流来布局,所以他们有了我们不期望有的重叠部分,box1和box2却跑到了子元素1和子元素所在区域的下面。

解决方法

1 给父元素设置高度(只适合高度固定的布局,若元素高度需要改动,仍需再改,不推荐)

.box1 {
        background: red;
        width: 200px;
        height: 100px;
    }

2 给父元素添加:overflow:hidden/auto/scroll都可以清除浮动(内容增多时不会自动换行,导致内容被隐藏,无法显示需要溢出的元素)

.box1{overflow:hidden}

3 给浮动元素末尾添加空标签,给空标签添加clear:both(会添加许多无意义的标签,导致代码冗余)

4  伪元素清除法:::afte{content:"";display:block;clear: both;height:0;overflow: hidden;visibility: hidden;}

.box1::after{
     content:"";
     display:block;
     clear: both;
     height:0;
     overflow: hidden;
     visibility: hidden;   
}

      码字不易,第一次写,有不对的地方请诸位评论指正,其中内容有所借鉴。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值