子div設置float后導致父div無法自動撐開的問題


子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;

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

以上辦法可能還有不妥之處,有待日后補充。

 




免責聲明!

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



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