CSS清除浮动

块级元素在页面中独占一行,自上而下排列。但很多时候因为布局需要,我们需要在一行显示多个块级元素,这时我们就需要用到浮动,即float属性。使用float属性可以实现我们的需要的页面布局,但也会带来一些问题。浮动回事元素脱离文档流,会使父级元素高度无法撑开,与浮动元素同级的非浮动块级元素会被遮盖

<style>
        .box{
            width: 300px;
            border: 2px solid red;
        }
        .left{
            width: 100px;
            height: 100px;
            background: darkseagreen;
            float: left
        }
        .right{
            width: 100px;
            height: 200px;
            background: dodgerblue;
            float:right
        }
    </style>

<div class="box">
    <div class="left">left</div>
    <div class="right">right</div>
</div>
浮动带来的问题.png
浮动带来的问题2.png

为了解决浮动带来的问题,我们需要清除浮动,清除浮动的方法有以下几种:

1.给父级元素设置相对应的高度
<style>
        .box{
            width: 300px;
            height:200px;  /*给父级设置相应的高度*/
            border: 2px solid red;
        }
        .left{
            width: 100px;
            height: 100px;
            background: darkseagreen;
            float: left
        }
        .right{
            width: 100px;
            height: 200px;
            background: dodgerblue;
            float:right
        }
    </style>

<div class="box">
    <div class="left">left</div>
    <div class="right">right</div>
</div>
2.为父元素添加overflow:hidden/auto
<style>
        .box{
            width: 300px;
            border: 2px solid red;
            overflow: hidden;  /*给父级元素添加overflow: hidden或者oveflow: auto属性*/
        }
        .left{
            width: 100px;
            height: 100px;
            background: darkseagreen;
            float: left
        }
        .right{
            width: 100px;
            height: 200px;
            background: dodgerblue;
            float: right;
        }
    </style>

<div class="box">
    <div class="left">left</div>
    <div class="right">right</div>
</div>
3.在父元素结束标签之前插入清除浮动的块级元素
<style>
        .box{
            width: 300px;
            border: 2px solid red;
            overflow: hidden;  /*给父级元素添加overflow: hidden或者oveflow: auto属性*/
        }
        .left{
            width: 100px;
            height: 100px;
            background: darkseagreen;
            float: left
        }
        .right{
            width: 100px;
            height: 200px;
            background: dodgerblue;
            float: right;
        }
        .more{
            clear:both;
        }
    </style>

<div class="box">
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="more"></div>
</div>
4.利用伪元素清除浮动

该样式在父元素的最后添加一个:after伪元素,通过清除伪元素浮动来撑起父元素的高度

<style>
        .box{
            width: 300px;
            border: 2px solid red;
            overflow: hidden;  /*给父级元素添加overflow: hidden或者oveflow: auto属性*/
        }
        .left{
            width: 100px;
            height: 100px;
            background: darkseagreen;
            float: left
        }
        .right{
            width: 100px;
            height: 200px;
            background: dodgerblue;
            float: right;
        }
        .clearfix:after{
            content: "";
            height: 0;
            clear: both;
            display: block;
        }
    </style>

<div class="box clearfix">
    <div class="left">left</div>
    <div class="right">right</div>
</div>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,862评论 1 92
  • 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动元素的特征: 不占据普通文档流的空...
    南山码农阅读 276评论 0 1
  • 一、常用css定位流描述 1、文档流定位 position: static(默认方式) 页面元素的默认定位方式 块...
    EdmundChen阅读 1,907评论 0 8
  • 引言 - float 有哪些特性 破坏性float 破坏了父标签的原本结构,使父标签出现了塌陷现象。导致这一现象的...
    番茄沙司a阅读 781评论 0 0
  • 什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(flo...
    秦至阅读 438评论 1 8