css清除浮動的幾種方式,哪一種最合適?

細心的人可能發現了,寫的導航條中存在一個問題,那就是使用了float以後,父級盒子的高度變爲0了。css

咱們來寫一個例子來看一下,建立一個父級div,並設置border屬性,而後下邊建立兩個子元素span,並設置浮動。具體代碼以下所示:瀏覽器

由上圖能夠看出,在給span添加了float以後,父級元素div的高度就變成了0。咱們有如下幾種方式來解決這個問題佈局

(1)給父級元素單獨定義高度(height)優化

原理:若是父級元素沒有定義高度,父元素的高度徹底由子元素撐開時,父級div手動定義height,就解決了父級div沒法自動獲取到高度的問題。 spa

優勢:簡單、代碼少、容易掌握。code

缺點:只適合高度固定的佈局,要給出精確的高度,若是高度和父級div不同時,會產生問題。對於響應式佈局會有很大影響。blog

(2)在標籤結尾處加空div標籤 clear:bothit

原理:添加一個空div,利用css提升的clear:both清除浮動,讓父級div能自動獲取到高度。io

優勢:簡單、代碼少、瀏覽器支持好、不容易出現怪問題class

缺點:很多初學者不理解原理;若是頁面浮動佈局多,就要增長不少空div,不利於頁面的優化。

(3)父級div定義 僞類:after 和 zoom    ------------比較支持

原理:元素生成僞類的做用和效果至關於方法2中的原理,可是IE8以上和非IE瀏覽器才支持:after,zoom(IE轉有屬性)可解決ie6,ie7浮動問題

優勢:瀏覽器支持好、不容易出現怪問題,寫法是固定的,不理解也能夠直接複製使用;(小編大力推薦使用此種方法,簡單便捷,只需添加一個class便可解決問題)

缺點:css代碼多、很多初學者不理解原理,要兩句代碼結合使用才能讓主流瀏覽器都支持。

4)父級div定義 overflow:hidden

優勢:簡單、代碼少、瀏覽器支持好

缺點:不能和position配合使用,由於超出的尺寸的會被隱藏。(不建議使用此種方式,可能會影響頁面元素佈局)

5,父級div定義 overflow:auto

<style type="text/css"> .div1{background:#000080;border:1px solid red;/*解決代碼*/width:98%;overflow:auto} .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%} .left{float:left;width:20%;height:200px;background:#DDD} .right{float:right;width:30%;height:80px;background:#DDD} </style> <div class="div1"> <div class="left">Left</div> <div class="right">Right</div> </div> <div class="div2"> div2 </div> 

原理:必須定義width或zoom:1,同時不能定義height,使用overflow:auto時,瀏覽器會自動檢查浮動區域的高度
優勢:簡單、代碼少、瀏覽器支持好
缺點:內部寬高超過父級div時,會出現滾動條。
建議:不推薦使用,若是你須要出現滾動條或者確保你的代碼不會出現滾動條就使用吧。

好了,本篇文章就給你們說到這裏,你們本身下來能夠這幾種方式都試一試,本身感受下哪一種更適合本身,小編一直使用的是第3種方式。

相關文章
相關標籤/搜索