浮動事後的任何元素都成了block level elementcss
全部內容在浮動,若是不處理,那麼就會很可怕。幸運的是有一個屬性叫作clear,當將它應用到一個元素時,它基本上說"中止浮動到這裏"--- 這個元素和它以後的元素都不會浮動,除非你應用一個新的float到另外一個元素。html
clear有三個值:vim
對父元素的影響markdown
* 對於其父元素來講,元素浮動以後,它將脫離正常的文檔流,因此它也沒法撐開其父元素, 形成其父元素的塌陷。
對其兄弟元素(非浮動)的影響ide
對其兄弟元素(浮動)的影響佈局
當對div用的百分比時,而後浮動剛恰好,可是若是要爲div設置border、padding等等,那麼可能就會超過100%或者父級盒子的大小,所以能夠爲div設置box-sizing: border-box。code
另一個問題, 當你有一下佈局時:orm
<div> <div class="fl">111</div> <div class="fl">222</div> </div> <footer>333</footer> .fl {float: left} footer {margin-top: 50px;clear: left;}
由於使用了clear: left後,因此footer不在圍繞浮動元素。可是你會發現,margin-top: 50px並不起做用。爲了解決這個問題, 在HTML中添加新的div元素,而且設置它的class爲clearfix。此時,能夠取消了footer的clear:both;以下:htm
<div> <div class="fl">111</div> <div class="fl">222</div> <div class="clearfix"></div> </div> <footer>333</footer> .fl {float: left} footer {margin-top: 50px;} clearfix {clear: both;}
可是這只是簡單的解決了這個問題而已。blog
所以歸納一下清除浮動(我以爲應該叫閉合浮動更好一點兒,清除浮動只是清除了浮動,可是不能解決高度塌陷的問題)的幾種方法:
.clearfix:after { content: " "; display: block; clear: both; }