不定高度的div背景或背景圖片不顯示問題


在使用div+css進行網頁布局時,如果外部div有背景顏色或者邊框,而不設置其高度,在IE瀏覽器下顯示正常。但是使用Firefox/opera瀏覽時卻出現最外層Div的背景顏色和邊框不起作用的問題。

大體結構

<style>
.a1 {width:100px;background:red;}
.b1 {background:blue;width:50px;height:600px;}
</style> </head> <body> <div class="a1"> <div class="b1"></div> </div> </body>

原因分析:由於在Firefox和opera中:如果里面的DIV是浮動的(float)而母體不會去計算子體float之后的height。而在 IE中支持這種計算,所以IE下正常。

所以出現這種問題有兩個前提:1.外部div沒有設置高度;2. 內部div是浮動的(帶有float屬性)。

一般,我們不確定外部div的高度,所以我們要清除浮動。

實現在div自增長后,其內的背景色或圖片如何隨之增長。

.a1{
width:100px;background:red;
height:auto !important; 
    height:550px; 
    min-height:550px;}

.a1:after {
    content:"."; 
    height:0; 
    visibility:hidden; 
    display:block; 
    clear:both;  
    }

1.在Div末尾加入代碼: 
<div style="clear:both;"></div> 

或者使用 

<br style="clear:both;" /> 

2. 使用after偽類 

這種方法就是對父容器使用after偽類和內容聲明在指定的現在內容末尾添加新的內容。經常的做法就是添加一個“點”,因為它比較小不太引人注意。然后我們再利用它來清除浮動(閉合浮動元素),並隱藏這個內容。 

這種方法兼容性一般,但經過各種 hack 也可以應付不同瀏覽器了,同時又可以保證html 比較干凈,所以用得還是比較多的。 

代碼如下:

#a1:after{ 
content:"."; 
height:0; 
visibility:hidden; 
display:block; 
clear:both; 


3.設置overflow為hidden或者auto 

這種做法就是將父容器的overflow設為hidden或auot就可以在標准兼容瀏覽器中閉合浮動元素. 

不過使用overflow的時候,可能會對頁面表現帶來影響,而且這種影響是不確定的,你最好是能在多個瀏覽器上測試你的頁面 

4.浮動外部元素,float-in-float 

這種做法就是讓父容器也浮動,這利用到了浮動元素的一個特性——浮動元素會閉合浮動元素。這種方式在 IE/Win 和標准兼容瀏覽器中都有較好的效果,但缺點也很明顯——父容器未必想浮動就浮動的了,畢竟浮動是一種比較特殊的行為,有時布局不允許其浮動也很正常。


免責聲明!

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



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