float浮動導致父元素高度坍塌的原因及清除浮動方法


 

    一、浮動產生原因

    一般浮動是什么情況呢?一般是一個盒子里使用了CSS float浮動屬性,導致父級對象盒子不能被撐開,這樣CSS float浮動就產生了。

本來兩個黑色對象盒子是在紅色盒子內,因為對兩個黑色盒子使用了float浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不能撐開,這樣浮動就產生了。

簡單地說,浮動是因為使用了float:left或float:right或兩者都是有了而產生的浮動。

    二、浮動產生負作用

    1、背景不能顯示

    由於浮動產生,如果對父級設置了(CSS background背景)CSS背景顏色或CSS背景圖片,而父級不能被撐開,所以導致CSS背景不能顯示。

    2、邊框不能撐開

    如上圖中,如果父級設置了CSS邊框屬性(css border),由於子級里使用了float屬性,產生浮動,父級不能被撐開,導致邊框不能隨內容而被撐開。

    3、margin padding設置值不能正確顯示

    由於浮動導致父級子級之間設置了css padding、css margin屬性的值不能正確表達。特別是上下邊的padding和margin不能正確顯示。

    三、css解決浮動,清除浮動方法

    1、對父級設置適合CSS高度

對父級設置適合高度樣式清除浮動,使用設置高度樣式,清除浮動產生,前提是對象內容高度要能確定並能計算好。

    弊端:必須要知道父元素高度是多少

    2、設置父元素也浮動

    弊端:對后續元素會帶來位置的影響

    3、父級div定義 overflow:hidden

    對父級CSS選擇器加overflow:hidden樣式,可以清除父級內使用float產生浮動。優點是可以很少CSS代碼即可解決浮動產生。

    為什么加入overflow:hidden即可清除浮動呢?那是因為overflow:hidden屬性相當於是讓父級緊貼內容,這樣即可緊貼其對象內內容(包括使用float的div盒子),從而實現了清除浮動。Css overflow:hidden清除浮動方法DIVCSS5推薦使用。

    弊端:如果有內容要以溢出的方式顯示的話,也一同被隱藏了。

    4、clear:both清除浮動

    在父元素中,追加空子級塊級元素,並設置其clear屬性值為 both 。

    這個css clear清除float產生浮動,可以不用對父級設置高度 也無需技術父級高度,方便適用,但會多加CSS和HTML標簽。

    5、利用CSS3新屬性完美解決

    css樣式表中新加:

1
2
3
4
5
     .clear:after{
         content:"";
         display:block;
         clear:both;
                 }

    然后在需要清除浮動的元素上引入.clear類: class="clear"

    此方法幾乎沒有弊端,推薦使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM