清除浮動的幾種方式,各自的優缺點

清除浮動的幾種方式,各自的優缺點
1.使用空標籤清除浮動clear:both。
原理:添加一個空div,利用css提高的clear:both清除浮動,讓父級div能自動獲取到高度
優點:通俗易懂,容易掌握
缺點:會添加很多無意義的空標籤,有違結構與表現的分離,在後期維護中將是噩夢
建議:不推薦使用,但此方法是以前主要使用的一種清除浮動方法
2.父級div定義overflow:hidden
原理:必須定義width或zoom:1,同時不能定義height,使用overflow:hidden時,瀏覽器會自動檢查浮動區域的高度
優點:簡單,代碼少,瀏覽器支持好
缺點:不能和position配合使用,因爲超出的尺寸的會被隱藏
建議:只推薦沒有使用position或對overflow:hidden理解比較深的朋友使用
3、父級div定義僞類:after和zoom(用於非IE瀏覽器)
原理:IE8以上和非IE瀏覽器才支持:after,原理和方法1有點類似,zoom(IE轉有屬性)可解決ie6,ie7浮動問題
優點:瀏覽器支持好,不容易出現怪問題(目前:大型網站都有使用,如:騰迅,網易,新浪等等)。
缺點:代碼多,要兩句代碼結合使用,才能讓主流瀏覽器都支持
建議:推薦使用,建議定義公共類,以減少CSS代碼

  1. display:block 使生成的元素以塊級元素顯示,佔滿剩餘空間;
  2. height:0 避免生成內容破壞原有佈局的高度。
  3. visibility:hidden 使生成的內容不可見,並允許可能被生成內容蓋住的內容可以進行點擊和交互;
    4)通過 content:".“生成內容作爲最後一個元素,至於content裏面是點還是其他都是可以的,例如oocss裏面就有經典的 content:“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”,有些版本可能content 裏面內容爲空,不推薦這樣做的,firefox直到7.0 content:”” 仍然會產生額外的空隙;
    5)zoom:1 觸發IE hasLayout。
    通過分析發現,除了clear:both用來清除浮動的,其他代碼無非都是爲了隱藏掉content生成的內容,這也就是其他版本的閉合浮動爲什麼會有font-size:0,line-height:0。
    4、父級div定義height
    原理:父級div手動定義height,就解決了父級div無法自動獲取到高度的問題。
    優點:簡單,代碼少,容易掌握
    缺點:只適合高度固定的佈局,要給出精確的高度,如果高度和父級div不一樣時,會產生問題
    5、父級div定義overflow:auto
    原理:必須定義width或zoom:1,同時不能定義height,使用overflow:auto時,瀏覽器會自動檢查浮動區域的高度
    優點:簡單,代碼少,瀏覽器支持好
    缺點:內部寬高超過父級div時,會出現滾動條。
    建議:不推薦使用,如果你需要出現滾動條或者確保你的代碼不會出現滾動條就使用吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章