CSS - clearfix清除浮動


首先,我們來解釋一下為什么要使用 clearfix(清除浮動)
通常我們在寫html+css的時候,如果一個父級元素內部的子元素是浮動的(float),那么常會發生父元素不能被子元素正常撐開的情況,如下圖所示:

 
父級元素未被展開

 

在寫怎么使用clearfix解決這個問題之前,先來看一個簡單的clear的例子便於理解。
假設我們現有這樣一個布局:

 
footer not cleared

我們可以看到footer的布局方式並不是我們想讓它做的,為了讓footer置於底部,可以給footer加上 clear:both; 來清楚footer兩側的浮動。

 

.footer { clear: both; } 
 
footer cleared

理解了上面的例子之后,我來用一個例子解釋clearfix的作用:

<div class="container"> <!-- black --> <div class="left">left</div> <!-- red --> <div class="right">right</div> <!-- green --> </div> <div class="footer">footer</div> <!-- blue --> 
.container { width: 500px; background-color: black; } .left { width: 200px; height: 300px; background-color: red; float: left; } .right { width: 200px; height: 200px; background-color: green; float: right; } .footer { width: 400px; height: 50px; background-color: blue; } 
 
上面代碼執行結果(未清除浮動)

我們可以看到,雖然footer在container外部,卻沒位於底端,因為container內部子元素為float,導致container並沒有被撐開(圖中根本沒有黑色元素顯示出來)。
如果我們給footer添加 clear:both;,布局問題可以被解決,但是container依舊沒有被撐開,有一種強行解決問題的感覺。
要解決此問題,我們可以給container添加一個類,叫做clearfix,下面是clearfix的實現形式(之一):

.clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } 

上述代碼通過偽類 :after 在container后添加內容(content),來實現清除浮動。

 
添加clearfix后的布局

最后,附上我在JSFiddle上寫的演示代碼,大家可以去動手嘗試一下 - clearfix 演示

相信這會解決不少你之前遇到過的布局問題!

注:部分圖片截取自css-tricks



作者:Wenliang
鏈接:https://www.jianshu.com/p/9d6a6fc3e398
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM