天天看點

10個技巧幫你搞定IE6

   雖然說

​​IE8​​​已經來了,并且表現不錯。8 個小時突破1200W下載下傳,遠遠地超過24小時下載下傳800W的firefox。但對于整個網際網路,IE6仍然是使用者最多的浏覽器。暫不說IE6怎樣,把 Web的表現做得更好,既是一種責任,也是一種能力的表現。如果你依然對IE6所出現的種種問題無可奈何,就讓我帶你來看一下來自SitePoint的

​​​10 Fixes That Solve IE6 Problems​​,學會這10個方法,你将可以解決大部分IE6出現的問題。

10個技巧幫你搞定IE6

1. 使用 DOCTYPE

你需要在HTML頁面的最頂部加上DOCTYPE類型,當然, strict版是值得推薦的,例如:

<!

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd"

>

或者, XHTML頁面的!DOCTYPE:

<!

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"

>

你最不想看到的是,IE6進入怪癖模式 – 其實已經夠多怪癖了。

2. 設定position: relative

設定​

​position:relative​

​解決了不止一個問題,特别當需要設定對齊的時候。很明顯,你需要明白的一點是,絕對定位是相對來說的。說不定,因為你沒有設定,而不知道東西都飛到那去了。比如,你設計了每篇文章前都有一張圖檔,最後,你發現,隻有一張圖檔在頁面上,或許,是他們重疊了。

3. 給浮動元素設定 display:inline 值(這個技巧相當實用,強烈推薦!)

這源于著名的IE6雙倍外邊距BUG,例如,你給一個DIV設計了浮動,并且,設定了​

​margin-left:5px;​

​​,在IE6中很可能就是​

​margin-left:10px​

​​了,這裡,給浮動元素設定 ​

​display:inline;​

​,即可解決問題。

4. 為元素設定 hasLayout

很多IE6(或IE7)的問題可以用設定hasLayout值的方法來解決。(如果你不知道hasLayout是什麼,請看​​這裡​​)

最簡單的給元素設定hasLayout值的方法是給加上CSS 的height或width(當然,zoom也可以用,但這不是CSS的一部分)。設定一個具體的值是推薦的,但有時候并不一定知道高度多少,這裡,你可能會用到​

​height:1%​

​。如果父元素沒有設定高度,那麼元素的實體高度并不會改變,但是,已經具備hasLayout屬性。

5. 解決字元重複出現的問題

複雜的布局可能導緻一些浮動元素裡面的文字,出現在清理浮動位置的下面。這是一個奇怪的問題,下面這此可以幫你解決:

  • 確定浮動元素設定了​

    ​display:inline;​

  • 在浮動元素中使用​

    ​margin-right:-3px;​

  • 在浮動元素的最後一個元素後加上一個IE注釋,例如:​

    ​<!--[if !IE]>把你的注釋放這裡​

    ​​…​

    ​<![endif]-->​

  • 在最後的元素中加上一個DIV(這以設定width 為90% 或者其他相似的高度)

UPDATE: 最簡單的方法是删除掉所有注釋。(感謝​​恬玮兒​​的提示,我自己并沒有遇到過,不過,google了一下,發現這個方法也可以解決,并且,這是值得推薦的一個方法。)

你可以到​​positioniseverything.net​​中檢視更多關于這個的解釋。

6.隻在​

​<a>​

​​标簽中使用hover,IE6隻支援​

​<a>​

​标簽顯示hover樣式

當然,你還是可以通過JS來解決這個方法。但是, 這關于到可通路性的問題。建議不要把重要的内容設定在利用JS來實作的hover中。

7. 使用​

​!important​

​ 或進階選擇器來區分IE浏覽器

比如min-height可以避免使用CSS來實作對IE的相容。

#element {
  
     min-height:
   20em;
  
     height:
   auto !important;
  
     height:
   20em;
   
  /*
   讓IE6顯示這個高度 
  */
  
}      

IE6 并不能正确地識别min-height,可以設定固定的高度,讓IE6解析為20em。即使如此,它還是會因為内容的尺寸擴大而改變高度。而另一個方法是使用進階選擇器:

#element {
  
     min-height:
   20em;
  
     height:
   20em;
  
}
  

  /*
   忽略 IE6 
  */
  
 #element[id] {
  
     height:
   auto;
  
}      

8. 避免按比例确定的尺寸

比例會讓IE6變得錯亂,除非你給父元素添加一個确切的高度。不然,給其他的加上​

​!important​

​,例如:

body{
  
     margin:
   2% 0 !important;
  
     margin:
   20px 0;
   
  /*
   IE6 可讀 
  */
  
}      

9. 盡早測試,經常測試

10. 重構你的代碼