1. 程式人生 > >html高度塌陷問題解決

html高度塌陷問題解決

高度塌陷的問題:    當開啟元素的BFC以後,元素將會有如下的特性    1 父元素的垂直外邊距不會和子元素重疊    開啟BFC的元素不會被浮動元素所覆蓋    開啟BFC的元素可以包含浮動的子元素    如何開啟元素的BFC    設定元素浮動    設定元素絕對定位    設定元素為inline-block    float:left; (不好)  雖然可以撐開父元素 會導致父元素寬度丟失了    而且使用這種方式導致下邊的元素上移。    display:inlink-block;    佈局好了,但是寬度又沒有了。但是會導致寬度丟失,不推薦使用這種方式    4 將元素的overflow  設定非visible值    overflow:visible    overflow:auto;  解決父元素高度塌陷 副作用最小的            hidden;相容性 在IE6中沒有BFC, 但是具有另一個隱含的屬性叫hasLayout. 該屬性的作用和BFC類似,所在IE6瀏覽器通過開啟hasLayout來解決問題。 方式:     元素的zoom設定為1即可     zoom:1     在 IE6中如果為一個元素指定了一個寬度,則會預設開啟一個     hasLayout.

clear:  both 清楚對他影響最大的那個元素的浮動

解決高度塌陷的方案二

     可以直接在高度塌陷的父元素的最後,新增一個空白的div     由於這個div並沒有浮動,他是可以撐開父元素高度的     然後對其進行清除浮動,這樣可以通過這個空白的div來撐開父元素的高度,基本沒有副作用     雖然可以解決問題啊,但是在頁面中新增多餘的結構。    **********************************    ==>     通過after偽類 設定為塊級元素 清除兩邊浮動 解決父類塌陷的問題     通過after偽類,選中box1的後邊     .box1:after{         content:"";         display:block;         //清除兩側的浮動         clear:both;     }     IE6不支援偽類。  zoom:1;     .clearfix:after{         /*新增一個內容*/         content:"";         /*轉換為一個塊元素*/         display:block;         /*清除兩側的浮動*/         clear:both;     }     /*在IE6中不支援after偽類,     所以在IE6中還需要使用hasLayout來處理*/     .clearfix{         zoom:1;     }IE6中如果上面的是內聯元素    也是浮不上去的 

終極版:

//經過修改後的clearfix是一個多功能的//既可以解決高度塌陷,又可以確保父元素和子元素的垂直外邊距重疊.clearfix:before,.clearfix:after{    content:"";    display:table;    clear:both;}