IE6雙邊距bug及其解決辦法


<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>無標題文檔</title>
<style type="text/css">
body,div{
 margin:0;
 padding:0;
}
#div1{
 width:200px;
 height:200px;
 background:#900;
 margin:20px 0 0 20px;
 float:left;
}
#div2{
 width:300px;
 height:200px;
 background:#009;
 margin:20px 0 0 20px;
 float:left;
}
</style>
</head>

<body>
<div id="div1">
</div>
<div id="div2">
</div>
</body>
</html>

上面這段代碼,在IE6和FF中的顯示結果分別如下圖所示:

可以看到,在IE6中顯示的紅色區域的左邊距實際為40px,是CSS代碼中設置的20px的兩倍,這是IE6的雙邊距BUG。當滿足下面這三個條件時,就會出現這個BUG:

1、要為塊狀元素;

2、要左側浮動;

3、要有左外邊距(margin-left)。

出現雙邊距的條件是當浮動元素的浮動方向和margin的方向一致時才會出現。也就是說,並不是只有塊狀元素左浮動,且具有左外邊距時才有這個 BUG,當一個盒子右浮動的同時有一個向右的margin-right的時候,IE6也會把margin-right解析為原來的2倍。當有多個同行元素 都浮動了,而且都有同方向的margin,則只有最靠近浮動方向的元素有雙邊距bug。

解決這個bug有兩個方法:
1.給float的元素添加一個display:inline
2.給ie6寫一個hack,其值是正常值的一半,即_margin-right:10px;這個方法不推薦,因為要加hack寫法,而這個是要盡量避免寫的。但是這個正好能夠說明這個bug的真實存在。


免責聲明!

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



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