如下展现了四种方式进行清除浮动
先看一段代码css
css
html
.box { border: 1px solid #f00; } .fl { float: left; width: 50px; height: 50px; background: #0f0; margin: 5px; }
html
segmentfault
<div class="box"> <div class="fl"></div> <div class="fl"></div> <div class="fl"></div> </div>
下面是结果
由于没有清除浮动,因此子元素没有将父元素撑开,出现上面的状况。flex
下面是几种清除浮动的方法
在最后一个浮动标签后,新加一个标签,给其设置clear:both; (不推荐)
css
spa
.box { border: 1px solid #f00; } .fl { float: left; width: 50px; height: 50px; background: #0f0; margin: 5px; } .clearfix { clear: both; }
html
.net
<div class="box"> <div class="fl"></div> <div class="fl"></div> <div class="fl"></div> <!-- 添加额外标签 设置clear: both;--> <div class="clearfix"></div> </div>
效果展现
.clearfix:after{ display: block; clear: both; content: ''; visibility: hidden; } .clearfix { *zoom: 1; }
.clearfix:after,.clearfix:before{ content: ""; display: table; } .clearfix:after{ clear: both; } .clearfix{ *zoom: 1; }
✨不知道BFC的参考个人 另一篇文章,这是一个比较重要的概念
css
code
.box { border: 1px solid #f00; } .fl { float: left; width: 50px; height: 50px; background: #0f0; margin: 5px; } .clearfix { // 触发BFC, 如下任意一种 overflow: hidden; /* overflow: auto; */ /* position: absolute; */ /* position: fixed; */ /* display: table; */ /* display: flex; */ }
html
htm
<div class="box clearfix"> <div class="fl"></div> <div class="fl"></div> <div class="fl"></div> </div>
将
clearfix
做为全局使用的类名, 这样在项目各处使用清除浮动就大大方便啦~~~~