如下展現了四種方式進行清除浮動
先看一段代碼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
做爲全局使用的類名, 這樣在項目各處使用清除浮動就大大方便啦~~~~