float浮動后,父級元素高度塌陷和遮蓋問題


當子元素不浮動的時候,父元素的高度是由子元素撐起來的。

子元素A和B是兩個div,獨占一行

效果如圖:

               

當子元素B浮動起來之后,父元素高度塌陷到只剩子元素A的高度

效果如圖:

      

當給子元素A(div)設置CSS屬性:display:inline 后,A的寬高將不起作用,寬高由內容撐開,即被字母A撐開。此時父級元素高度沒有塌陷到和A一樣,而是和B的高度一樣

效果如圖:

  

當子元素A和B同時浮動起來之后,A的CSS屬性:display:inline失效,效果為float的效果,同時父級元素的高度徹底塌陷為0

效果如圖:

  

 

 

解決塌陷方案 1 可以讓父級元素也浮動起來,跟子元素處在同一層上。

效果如圖:

  

但是這樣做的時候,如果在父級元素后面緊跟一個元素,這個元素會填到藍色背景的父級元素底下的位置

效果如圖 (父級元素2,黃色背景,高度為藍色元素的2倍):

  父級2 的一半高度插到了浮動起來的藍色元素底下

  

這樣會造成布局錯亂的問題,正常情況下是不希望后續元素被遮住的,所以要給父級2元素添加一個CSS樣式   clear:both;

效果如圖:                    這樣就可以解決遮蓋問題

    

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

解決塌陷方案 2給父級元素添加一個CSS屬性  overflow:hidden

這樣會強制父級元素包裹住浮動的子元素,子元素可以撐開父級元素的寬高

效果如圖:          此時父級2正常布局即可,不會出現遮蓋問題。

  

 

以上兩種解決父級元素塌陷和遮蓋問題的方法是我常用的兩種方法,歡迎補充。

 

(友情提示:頻繁更改樣式的時候,瀏覽器容易出現緩存,即正確更改了樣式,但頁面並未變成新樣式的樣子,非常影響樣式的調整,需要注意)

 


免責聲明!

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



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