css清除浮動的方法

首先來看個栗子:
css代碼:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.main {width:300px;height:auto;padding:10px;background:#ccc;}
.main .left {width:100px;height:50px;background:red;float:left;}
.main .right {width:100px;height:50px;background:blue;float:left;}
.footer {width:300px;height:20px;background:green;}
</style>
</head>
<body>
<div class="main">
<div class="left"></div>
<div class="right"></div>
<div class="clear"></div>
</div>
<div id="footer"></div>
</body>
</html>

結(jié)果如果所示:


解決這種問題有幾種方法:

  1. 在父級添加 overflow:hidden
    優(yōu)點:不存在結(jié)構(gòu)和語義化問題,代碼量極少
    缺點:內(nèi)容增多時候容易造成不會自動換行導(dǎo)致內(nèi)容被隱藏掉,無法顯示需要溢出的元素
  2. 父元素也設(shè)置浮動(加個float:left/right)
    優(yōu)點:不存在結(jié)構(gòu)和語義化問題,代碼量極少
    缺點:使得與父元素相鄰的元素的布局會受到影響,不可能一直浮動到body,不推薦使用
  3. 父元素設(shè)置 display:table
    優(yōu)點:結(jié)構(gòu)語義化完全正確,代碼量極少
    缺點:盒模型屬性已經(jīng)改變,由此造成的一系列問題,得不償失,不推薦使用
  4. 使用 :after 偽元素
    優(yōu)點:需要注意的是 :after 是偽元素,不是偽類(某些CSS手冊里面稱之為“偽對象”),很多清除浮動大全之類的文章都稱之為偽類,不過csser要嚴謹一點,這是一種態(tài)度。由于IE6-7不支持:after,使用 zoom:1 觸發(fā) hasLayout。
    缺點:兼容性不是很好。
  5. 在浮動的元素后面添加空標(biāo)簽 <div class="clear"></div> 清除浮動
    優(yōu)點:簡單明了
    缺點:無意義的空標(biāo)簽,不利于語義化

個人比較偏向于:after的方式(蘋果網(wǎng)站就是采用此種方式)

參考
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J的外補...
    _Yfling閱讀 14,155評論 1 92
  • 前言 摘要: 浮動的元素可以向左或向右移動,直到它的外邊緣碰到父容器或另一個浮動元素為止。由于浮動元素不在文檔的普...
    zouyang0921閱讀 483評論 0 2
  • BFC CSS中的BFC BFC:block formatting context塊級格式化上下文; BFC 與清...
    小人物的秘密花園閱讀 676評論 0 0
  • 各種純css圖標(biāo) CSS3可以實現(xiàn)很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,982評論 0 8
  • 無意看到個新聞,就是說張智霖和袁詠儀這對恩愛的老夫妻花數(shù)百萬買車買包包享受生活,卻唯獨租房過了20年!這對隨時...
    妖媚兒閱讀 301評論 0 0

友情鏈接更多精彩內(nèi)容