CSS: 解決DIV FLOAT后,父DIV無法高度自適應的問題
在用CSS+DIV的布局中,經常會發現,當一個DIV float之后,如果他的高度超過了其父DIV的高度時,其父DIV的高度并不會相應的進行調整。要解決這個問題(也叫做閉合(清除)浮動),我們有四種辦法:
1. 額外標簽法
這種方法就是向父容器的末尾再插入一個額外的標簽,并令其清除浮動(clear)以撐大父容器。這種方法瀏覽器兼容性好,沒有什么問題,缺點就是需要額外的(而且通常是無語義的)標簽。我個人比較喜歡這種方法,因為它簡單、實用、瀏覽器兼容性好,而且這種方法也是W3C推薦的方法
或者使用
2. 使用after偽類
這種方法就是對父容器使用after偽類和內容聲明在指定的現在內容末尾添加新的內容。經常的做法就是添加一個“點”,因為它比較小不太引人注意。然后我們再利用它來清除浮動(閉合浮動元素),并隱藏這個內容。這種方法兼容性一般,但經過各種 hack 也可以應付不同瀏覽器了,同時又可以保證html比較干凈。
#outer:after
{
content:”.”;
height:0;
visibility:hidden;
display:block;
clear:both;
}
3. 設置overflow為hidden或者auto
這種做法就是將父容器的overflow設為hidden或auot就可以在標準兼容瀏覽器中閉合浮動元素。不過使用overflow的時候,可能會對頁面表現帶來影響,而且這種影響是不確定的,你最好是能在多個瀏覽器上測試你的頁面。
#outer
{
overflow:auto;
zoom:1;
}
overflow:auto;是讓高度自適應, zoom:1;是為了兼容IE6,也可以用height:1%;的方式來解決。
4. 浮動外部元素,float-in-float
這種做法就是讓父容器也浮動,這利用到了浮動元素的一個特性——浮動元素會閉合浮動元素。這種方式在 IE/Win 和標準兼容瀏覽器中都有較好的效果,但缺點也很明顯——父容器未必想浮動就浮動的了,畢竟浮動是一種比較特殊的行為,有時布局不允許其浮動也很正常。
看一下自己代碼的例子吧:
src=”../dms/get.html?path=”
alt=”\” style=”display: inline-block; width: 93px; height: 90px” />
里面迭代會出現很多div 里面的div會向左浮動,因而是父div的高度無法自適應問題的出現。
推薦文章
2025-01-18
2024-11-28
2024-11-09
2024-10-25
2024-06-25
2024-01-04
2023-11-06
2023-10-30
2023-10-13
2023-10-10
穩定
產品高可用性高并發貼心
項目群及時溝通專業
產品經理1v1支持快速
MVP模式小步快跑承諾
我們選擇聲譽堅持
10年專注高端品質開發