CSS中的浮動和清除浮動

浮動到底是什么?

  • 浮動元素會脫離文檔流并向左/向右浮動,直到碰到父元素或者另一個浮動元素。

浮動有哪些特征?

浮動會脫離文檔

  • 浮動不會影響普通元素的布局,同時也存在蓋住普通元素的風險。


    浮動會脫離文檔流

浮動可以內聯排列

  • 浮動的元素可以設置寬高并且可以內聯排列,是介于inline和block之間的存在。如果每個元素的高度不一致,會出現“卡住”的情況。


    浮動可以內聯排列

浮動會導致父元素高度坍塌

.box-wrapper {
  border: 5px solid red;
}
.box-wrapper .box {
  float: left; 
  width: 100px; 
  height: 100px; 
  margin: 20px; 
  background-color: green;
}
<div class="box-wrapper">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>

結果如下,浮動元素脫離了文檔流,并不占據文檔流的位置,自然父元素也就不能被撐開,所以沒了高度。


父元素高度坍塌

如何清除浮動?

清除浮動實際上是“消除浮動影響”;而不是“浮動”本身。

1.clear清除浮動(推薦使用)

clear屬性不允許被清除浮動的元素的左邊/右邊挨著浮動元素,底層原理是在被清除浮動的元素上邊或者下邊添加足夠的清除空間。

接著上面的例子,我們簡單修改一下HTML代碼,如下

<div class="box-wrapper">
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div style="clear:both;"></div>
</div>
clear清除浮動

不要在浮動元素上清除浮動
如果我們給第三個元素加上clear:both,結果會怎樣?

<div class="box-wrapper">
    <div class="box"></div>
    <div class="box"></div>
    <div class="box" style="clear:both;"></div>
</div>
不要在浮動元素上清除浮動

給第三個元素加上clear:both之后,第三個元素的左右都沒有挨著浮動元素,但是為什么高度還是坍塌了呢?機智的你可能發現了,由于第三個元素是浮動元素,脫離了文檔流,就算給第三個元素上下加了清除空間,也是沒有任何意義的。

2.對父級設置適合CSS高度

對父級設置適合高度樣式清除浮動,這里對“.box-wrapper”設置一定高度即可,一般設置高度需要能確定內容高度才能設置。

3.父級div添加 overflow:hidden樣式

overflow:hidden屬性相當于是讓父級緊貼內容,這樣即可緊貼其對象內內容(包括使用float的div盒子),從而實現了清除浮動。

參考鏈接
http://www.lxweimin.com/p/cd4cde49f0d4
http://www.divcss5.com/jiqiao/j406.shtml

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 從業三年,項目無數,現在回過頭來,想要把一些重要的知識用白話整理出來:這個東西是什么?怎樣才是最佳實踐?希望對自己...
    齊修_qixiuss閱讀 40,505評論 19 203
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,815評論 1 92
  • 浮動 CSS允許浮動任何元素。 浮動元素 首先,會以某種方式將浮動元素從文檔的正常流中刪除,不過它還是會影響布局。...
    exialym閱讀 1,251評論 0 6
  • 一,浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 浮動模型是一種可視化格式模型,浮動...
    DeeJay_Y閱讀 907評論 0 4
  • 1.浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響?(1)浮動元素會脫離正常的文檔流,按...
    饑人谷_DanaeJJ閱讀 450評論 0 0