CSS 清除浮動
關於浮動可以參閱CSS 浮動一章節。
之所以要清除浮動,是因為浮動的元素可能會引起各種頁面佈局問題。
特別說明:大多數教程,會將清除浮動與閉合浮動混為一談,其實兩者是有區別。
具體參閱清除浮動與閉合浮動的區別一章節,本文為了方便將它兩者混為一談。
一.清除浮動的必要性:
下面將通過例項程式碼簡單演示一下浮動所帶來的問題。
(1).導致父元素塌陷:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #box{ width:150px; border:5px solid red; } #ant{ width:100px; height:50px; background:blue; float:left; } </style> </head> <body> <div id="box"> <div id="ant"></div> </div> </body> </html>
子元素浮動脫離文件流,那麼它就不再佔據空間,父元素沒有被子元素撐開,出現塌陷現象。
(2).浮動對兄弟元素的影響:
對於兄弟元素的影響也要分內聯元素還是塊級元素。
如果是塊級元素,那麼此元素會盡可能的與浮動元素處於同一行,例如浮動元素覆蓋此塊級元素。
如果是非塊級元素,那麼此元素會盡可能的會圍繞這個浮動元素。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #one{ width:200px; height:50px; background:red; float:left; } #two{ width:300px; height:80px; background:blue; } </style> </head> <body> <div id="one"></div> <div id="two"></div> </body> </html>
第二個元素是塊級元素,所以浮動元素可以覆蓋非浮動元素。
再來看一段程式碼:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #one{ width:200px; height:50px; background:red; float:left; } #two{ width:300px; height:80px; background:blue; } </style> </head> <body> <div id="one"></div> <span id="two">螞蟻部落</span> </body> </html>
在上面的程式碼中,span元素會環繞浮動的div元素,不會被覆蓋。
當然不能因此說因為float浮動而導致了上面的bug,因為這是符合原理的,不屬於bug。
二.清除浮動方法:
(1).清除浮動對兄弟元素的影響:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #one{ width:200px; height:50px; background:red; float:left; } #two{ width:300px; height:80px; background:blue; clear:both; } </style> </head> <body> <div id="one"></div> <div id="two">螞蟻部落</div> </body> </html>
clear屬效能夠消除它前面浮動元素對它的影響,使該元素位於它前一個浮動元素之下。
兩點說明:
不能消除當前元素內部的浮動元素所產生的影響。
不能消除塊級格式化上下文元素中浮動元素的影響。
上述兩點在清除浮動與閉合浮動的區別一章節也做了介紹。
(2).解決父元素塌陷問題:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #box{ width:200px; border:1px solid #ccc; } #inner{ width:100px; height:80px; background:blue; float:left; } </style> </head> <body> <div id="box"> <div id="inner"></div> <div style="clear:both;"></div> </div> </body> </html>
新增一個額外div標籤,並且給此div新增clear:both屬性,這樣就可以清除上面浮動元素的影響,防止父元素出現塌陷現象。此種方式並不推薦,因為增加額外的元素。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #box{ width:200px; border:1px solid red; overflow:hidden; *zoom:1; } #inner{ width:100px; height:100px; background:blue; float:left; } </style> </head> <body> <div id="box"> <div id="inner"></div> </div> </body> </html>
與上面的方式相比,沒有增加額外標籤,不過overflow屬性並不是專門為清除浮動所設計,並且由於此屬性可以隱藏超出的元素內容,可能會導致子元素內容無法顯示完全或者出現滾動條。之所以能夠有清除浮動的效果,是因為它啟用了元素的BFC,具體參閱CSS BFC塊級格式化上下文一章節。
特別說明:zoom:1是為了相容IE6瀏覽器,用於觸發元素的haslayout屬性,不過通常情況下不用設定,因為只要設定元素的長度和寬度就可以觸發haslayout屬性,但是當前還需要考慮IE6嗎,感覺已經好多年沒有見到這貨。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> .parent{border:2px solid green;} .clearfix{*zoom:1;} .clearfix:after{ content:"."; display:block; height:0; visibility:hidden; clear:both; } .children{ width:100px; height:100px; background-color:red; float:left; } .right{ width:100px; height:100px; background-color:blue; float:right } </style> </head> <body> <div class="parent clearfix"> <div class="children"></div> <div class="right"></div> </div> </body> </html>
此種方式算是一種比較完美的方式,不會增加額外的標籤,又可以重用。
相關文章
- css清除浮動CSS
- CSS——清除浮動CSS
- CSS 浮動(Float) 清除浮動CSS
- CSS-清除浮動CSS
- CSS清除浮動方法大全CSS
- css清除浮動的原理CSS
- CSS清除浮動的四種方法CSS
- css3 清除浮動的方式CSSS3
- CSS 小結筆記之清除浮動CSS筆記
- CSS清除浮動大全共8種方法CSS
- 前端入門-day3(CSS中浮動和清除浮動)前端CSS
- 清除浮動
- 談談浮動和清除浮動?
- 直播平臺製作,css之如何清除浮動CSS
- css 盒模型 文件流 幾種清除浮動的方法CSS模型
- CSS深入理解:overflow:hidden——溢位,坍塌,清除浮動CSS
- css清除浮動float的七種常用方法總結CSS
- 深入清除浮動原理
- 清除浮動的方法
- 清除浮動與閉合浮動區別
- 好程式設計師web前端學習路線分享CSS浮動-清除浮動篇程式設計師Web前端CSS
- 為什麼會出現浮動和什麼時候需要清除浮動?清除浮動的方式?
- H5-28 清除浮動H5
- 什麼是浮動?浮動帶來的影響?怎麼清除浮動?
- CSS float 浮動CSS
- CSS float浮動CSS
- CSS浮動(float)CSS
- 清楚CSS浮動CSS
- 如何使用BFC清除CSS浮動以及解決margin合併的問題CSS
- CSS + HTML 小知識點大雜燴(margin合併、塌陷,清除浮動)CSSHTML
- 幾種有效的清除浮動的方法
- 清除浮動的幾種方式及其原理
- css浮動詳解CSS
- CSS之浮動FloatCSS
- 12-CSS浮動CSS
- CSS浮動一:divCSS
- 7. CSS 的 浮動CSS
- HTML CSS 浮動佈局⑤HTMLCSS