子div設置float后會導致父div無法自動撐開
原因:內部的DIV因為float:left之后,就丟失了clear:both和display:block的樣式,所以外部的DIV不會被撐開。
以下是幾種解決辦法(假設父div的class為“container”):
方法1、使用偽類
1 .container:after{ 2 content: "."; 3 display: block; 4 height: 0; 5 clear: both; 6 visibility: hidden; 7 }
1 .container{ 2 display: inline-block;/*第一種撐開辦法,底下會有部分被遮到,所以添加這行,就完美了*/ 3 }
方法2、不撐開的原理是overflow不可見,所以給父div添加overflow:auto;就行,IE要用_height:1%;
1 .container{ 2 overflow: auto;/*讓主要內容區隨內容自動撐開*/ 3 overflow-y:hidden;/*把出現的滾動條隱藏,但是底下會被遮到一點,不完美*/ 4 _height:1%;/*對IE的hack*/ 5 }
方法3、可以專門最后添加一個子div用來清除浮動:<div class="clear"></div>
設置樣式.clear{clear:both; font-size:0; height:1%;}
方法4、可以設置父div的高度(也就是手動撐開,不靈活);
方法5、直接給父div設置
display: inline-block;這樣也自動撐開
方法6、直接給子div設置display: inline-block;也能自動撐開,但是排版問題有待研究學習。
方法7、從網上還發現了一種方法,給父div增加屬性:display:table;
---------------------------------------------------------------------------------------------
以上辦法可能還有不妥之處,有待日后補充。