div沒有設置高度時背景顏色不顯示(浮動)


  在使用div+css進行網頁布局時,如果外部div有背景顏色或者邊框,而不設置其高度,在IE瀏覽器下顯示正常。但是使用Firefox/opera瀏覽時卻出現最外層Div的背景顏色和邊框不起作用的問題。網上查找資料之后主要原因如下:由於在Firefox和opera中:如果里面的DIV是浮動的(float)而母體不會去計算子體float之后的height。而在 IE中支持這種計算,所以IE下正常。

解決方法:
給外部div直接設置高度(不推薦),因為很多時候我們並不知道外部div的高度,我們希望靠里面的div來根據內容自動抻開外邊的div,除非你確定的知道外部的div的高度的情況下,所以不建議使用這種方法。
方法一:
在內部每個div后加一個清除浮動(推薦),這樣firefox和opera就把里面不當成浮動,會自動計算內部div高度
<div class="outer">
 

<div class="inner1"></div>
  <div class="inner2"></div>
  <div style="clear:both;"></div>
</div>
方法二:
在.outer中加一句overflow:hidden;
overflow 屬性規定當內容溢出元素框時發生的事情。如果外層設置了高度,並且高度小於內層占的實際高度,則內層一部分內容會被隱藏。

 

主要想強調的一點是,前面中提到的IE中能夠正常顯示僅限ie6,在之后的版本中同樣也無法設置顯示背景顏色

上面的示例中必須給子元素其中之一添加高度,不然還是無法正常顯示背景顏色。實際測試時寬度為0,但父元素的背景顏色可以正常顯示。示例代碼:

<!doctype html>
<html>
    <head>
        <title>多列浮動</title>
        <meta http-equiv="content-type" content="text/html" charset="utf-8"/>
        <style type="text/css" media="screen">
            body{
                margin:0;
                padding:0;
                text-align:center;
            }

            #menu{
                width:800px;
                margin:0 auto;
                text-align:left;
                background:#ccc;
            }
            #menu ul{
                float:left;
                margin:0px;
                padding:0px;
                list-style:none;
            }
            #menu ul li{
                float:left;
                width:99px;
                display:block;
                line-height:30px;
                text-align:center;
            }
            #menu .menudiv{
                float:left;
                width:1px;
                height:20px;
                background:#888;
                margin-top:5px;
            }
        </style>
    </head>
    <body>
        <div id="menu">
            <ul>
                <li><a href="#">菜單一</a></li>
                <li class="menudiv"/>
                <li><a href="#">菜單二</a></li>
                <li class="menudiv"/>
                <li><a href="#">菜單三</a></li>
                <li class="menudiv"/>
                <li><a href="#">菜單四</a></li>
                <li class="menudiv"/>
                <li><a href="#">菜單五</a></li>
                <li class="menudiv"/>
                <li><a href="#">菜單六</a></li>
                <li class="menudiv"/>
                <li><a href="#">菜單七</a></li>
                <li class="menudiv"/>
                <li><a href="#">菜單八</a></li>
                <li class="menudiv"/>
            </ul>
        </div>
    </body>
</html>

里面id為menu的元素雖然定義了背景顏色,但是由於子元素都設置了float屬性,所以無法正常顯示背景顏色。

解決方法一:給menu加上overflow:hidden;

解決方法二:直接在menu內ul外面添加<div style="clear:both;"></div> 就是說添加清除浮動的子元素即可

參考資料:http://lovephpor.blog.51cto.com/1850499/563540

 


免責聲明!

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



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