1. 程式人生 > >整理IE低版本瀏覽器的bug

整理IE低版本瀏覽器的bug

IE6雙倍距的問題

問題: 當浮動元素設定margin邊距時,邊距會加倍。
解決方法:是給浮動元素加上display:inline屬性

IE6圖片下方有空間隙

問題:圖片的下方預設的空隙
解決方案: 給img設定 display:block屬性

IE63畫素偏移BUG

問題:當浮動元素與非浮動元素相鄰(注意這裡的相鄰可以是縱向的也可以是橫向的)時,這個3畫素的Bug就會出現,它會偏移3畫素。實際表現就是兩個元素之間產生了一道縫隙!
解決方案:將兩個元素都浮動就OK了。此BUG深層的原因是非浮動元素的layout未觸發,所以這裡只要是能夠觸發layout的css都可以解決問題。

相對位置和溢位隱藏

問題:當父元素的overflow被設定成hidden並且子元素被設定成position:relative。
解決方案:為父元素增加position:relative;

IE的最小高度

問題:沒有最小高度的概念
解決方案:IE忽略min-height屬性。採用這種暴力的方式解決:

selector {
   min-height:500px;
   height:auto !important;
   height:500px;
}

IE6,7失效的margin-left/right

問題;

<div class="wrap">
    <div class="cont">banggan</div>
</div>
wrap{background:#eee;border:1px solid #ccc;}
cont{border-bottom:2px solid #aaa;margin:0 100px;height:30px;}

解決方案:觸發.warp的layout就可以了。具體的比如:給.warp加上zoom:1或者width等等。

PNG透明

所以如果你想要使用透明影象並且GIF不能給你想要的質量,你會需要這個對PNG的hack。你必須意識到,如果你使用一張PNG影象作為背景,你將不能設定背景的位置。解決方案:

img {
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(...);

禁用IE預設垂直滾動條

預設情況下,即使內容適合視窗大小,IE(譯註:IE6/7)也會顯示垂直滾動條。你可以使用overflow:auto,讓滾動條只在你需要時出現

:hover偽類

IE只支援a元素的 :hover偽類。使用jQuery的hover event來達到相同效果。

IE中 Iframe透明背景

在firefox和safari裡你應該不會遇到這個問題因為預設情況下,iframe的背景被設定為transparent,但是在IE裡,卻不是如此。你需要用到allowTransparency 屬性並且加入下面的CSS程式碼來達成目的。

/* in the iframe element */
<iframe src="content.html" allowtransparency="true">
</iframe>

/* in the iframe docuement, in this case content.html */
body {
    background-color:transparent;
}

其他

  • input[button | submit] 不能用 margin:0 auto; 居中,為input新增width
  • body{overflow:hidden;}沒有去掉滾動條,設定html{overflow:hidden;}
  • hasLayout的標籤擁有高度,*height:0;_overflow:hidden;
  • :hover偽類不能改變有position:absolute的子級元素的left/top值,把top/left的值設定成除0%外的所有百分值;或新增一個margin-[所有方向]除0外的所有值,包括0%
  • margin:0 auto; 不能讓block元素水平居中,給block元素新增一個width
  • form>[hasLayout]元素有margin-left時,子元素中的[input | textarea] 出現2×margin-left,form > [hasLayout 元素]{margin-left:寬度;}form div{*margin-left:寬度÷2;}
  • 當border-width有1條<邊3條時被設定成dotted時,1px的邊dotted顯示成dashed,不在同一個元素上使用不同寬度的 dotted
  • :focus + selector {} 選擇器失效,在失效選擇器後面新增一個空選擇器, :focus{}
  • 列表中混亂的浮動:在list中浮動圖片時,圖片出現溢位正常位置;或沒有list-style,用背景圖片替換list-style
  • th 不會自動繼承上級元素的 text-align,給th新增text-align:inherit;
  • :hover 時若background-color為#fff, 失效,把background-color改成background。或者,非#fff || #ffffff