清除浮動的方法
1.給父級div設置heigh
原理: 父級手動定義height,解決了父級div無法自動獲取到高度的問題
優點:簡單,代碼少
缺點:只適合高度固定的布局,要給出精確的高度,如果高度和父級div不一樣時,會產生問題
不建議使用只是建議高度固定的布局時使用
2.在結尾處加空div標簽clear:both
原理:添加一個空div,利用clear:both清除浮動,讓父級div能自動湖區高度
優點:簡單代碼少,瀏覽器支持好
缺點:很多初學者不理解原理,如果頁面浮動多就要增加很多空div,讓結構復雜
不推薦使用,這是以前主流的清除浮動的方法
3.父級div定義偽類:after 和zoom
原理:IE8以上和非IE瀏覽器才支持:after,原理和方法2類似,zoom(IE專有屬性),可解決ie6,ie7的浮動問題
優點:瀏覽器支持好,不容易出怪問題
缺點:代碼多, 很多人不理解原理,要兩句代碼結合使用,才能讓主流瀏覽器支持
建議使用,建議定義公共類,增加可重復利用性
4.父級div定義overflow:hidden
原理:必須定義width或者zoom:1,同時不能定義height,使用它的時候,瀏覽器會自動檢查浮動區域高度
優點:簡單,代碼少,瀏覽器支持好
缺點:不能和position配和使用,因為超出的尺寸會被隱藏
只推薦沒有使用position或duioverflow:hidden理解比較深的時候使用
5.父級div定義overflow:auto
原理:必須定義width或zoom:1,同時不能定義height,使用overflow:auto時,瀏覽器會自動檢查浮動區域的高度
優點:簡單,代碼少,瀏覽器支持好
缺點:內部寬高超過父級div時,會出現滾動條。
不推薦使用,如果你需要出現滾動條或者確保你的代碼不會出現滾動條就使用吧。
6.父級div也一起浮動
原理:所有代碼一起浮動,就變成了一個整體
優點:沒有優點
缺點:會產生新的浮動問題。
7.結尾處加br標簽clear:both
原理:父級div定義zoom:1來解決IE浮動問題,結尾處加br標簽clear:both
8.替代浮動方法要浮動的元素設置display:inline-block
優點:整體代碼簡潔了很多,這是他的價值所在
缺點:有瀏覽器兼容問題;只有特定的場合適用,像水平菜單條之類,布局之類,並不適合文字環繞 圖片這些真正需要float的場合;元素間的純空白會造成占位
清除浮動的方法