IE6雖然隨著XP系統退出市場在國外基本基本消失,但是在國內依然佔據很大的市場份額。政務網站、頁遊官網等依然要考慮到IE6使用者的體驗。如果你的網站使用CSS3等“新技術”時,就必須果斷放棄IE6的相容。

IE6不支援兄弟選擇器和多類選擇器,使用時一定要注意。

  • 瀏覽器新增預設樣式

問題:

有些瀏覽器會給瀏覽器新增預設樣式,而且不同瀏覽器新增的樣式不同,導致佈局在不同瀏覽器發生不同的錯亂。

解決:

清楚預設樣式,保證不同瀏覽器樣式統一。(百度中有很多不錯的清除樣式模板)以下是我自己常用的清除樣式檔案:

 body, h1, h2, h3, h4, h5, h6, hr, p, blockquote,dl, dt, dd, ul, ol, li,pre,fieldset, button, input, textarea,th, td { margin:;padding:;}/* 設定預設字型 */
body,button, input, select, textarea { /* for ie */ font: 14px/1.5 arial,"Microsoft Yahei","Hiragino Sans GB",sans-serif; /* 用 ascii 字元表示,使得在任何編碼下都無問題 */ }
h1 { font-size: 18px; /* 18px / 12px = 1.5 */ }
h2 { font-size: 16px; }
h3 { font-size: 14px; }
h4, h5, h6 { font-size: 100% }
img { height: auto;vertical-align: middle;border: 0 none;}
address, cite, dfn, em, var { font-style: normal; } /* 將斜體扶正 */
code, kbd, pre, samp, tt { font-family: "Courier New", Courier, monospace; } /* 統一等寬字型 */
small { font-size: 12px; } /* 小於 12px 的中文很難閱讀,讓 small 正常化 */
ul, ol { list-style: none; }
/* 重置文字格式元素 */
a { text-decoration: none; }
abbr[title], acronym[title] { /* 注:1.ie6 不支援 abbr; 2.這裡用了屬性選擇符,ie6 下無效果 */ border-bottom: 1px dotted;cursor: help;}
q:before, q:after { content: ''; }
/* 重置表單元素 */
legend { color: #000; } /* for ie6 */
fieldset, img { border: none; } /* img 搭車:讓連結裡的 img 無邊框 */
/* 注:optgroup 無法扶正 */
button, input, select, textarea { font-size: 100%; margin:;vertical-align: baseline; /* 使得表單元素在 ie 下能繼承字型大小 */ }
table {border-collapse: collapse;border-spacing:;}
hr {border: none;height: 1px;}
/* 讓非ie瀏覽器預設也顯示垂直滾動條,防止因滾動條引起的閃爍 */
html { overflow-y: scroll;}
body{font: 14px/1.5 arial,"Microsoft Yahei","Hiragino Sans GB",sans-serif;color: #8C8C8C;}
  • img標籤底部間隙

問題:

div中包含一張圖片,底部可能有2px、4px或更多的間隙,不同的font-size會影響間隙的大小。

解決:

  1. 將圖片的垂直對齊方式vertical-align值設為top或bootm
  2. 將圖片轉化為塊元素,display:block;
  3. 將包含圖片的父容器字型大小設為0,font-size:0;
  • img在IE有藍色邊框

問題:

img標籤在IE6-IE10加了超連結(a標籤)後藍色邊框

解決:

img{border:0;}

  • margin上下邊距合併

問題:

同時給上下容器新增上下邊距會出現邊距合併問題(合併最大的值)

解決:

不要同時給兩個上下邊距,只給一個就好。

  • margin-top沒有加到指定元素上

問題:

在容器中給子元素一個margin-top沒有想要的效果。

解決:

  1. 給父元素一個透明的畫素邊框 border:1px solid rgba(0,0,0,0);
  2. 通過給父元素一個padding-top來模擬margin-top。
  • IE6雙倍邊距

問題:

給浮動元素加margin-left時IE6會出現雙倍邊距。

解決:

給浮動元素display:inline;

  • 子元素浮動時父元素高度為0

問題:

父元素高度不確定,子元素浮動時,父元素高度變為0。浮動子元素層級高於父元素導致撐不開父元素。

解決:

  1. 父容器新增overflow:hidden;
  2. 在子元素後新增一個空div清除浮動 <div style="height:0;overflow:hidden;clear:both;"></div>
  • IE6不支援固定定位

問題:

IE6不支援position:fixed;

解決:

 選擇器{width: 200px;height: 200px;background: red;position: fixed;bottom: 50px;right: 50px;*position: absolute;*top: expression(eval(document.documentElement.scrollTop+200));}
*html{background-image: url("blank:about");background-attachment: absolute;}
  • IE6不支援png透明

問題:

IE6下png透明度不支援

解決:

background-image:url(123.png); _background:none; _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='123.png');

濾鏡中的圖片路徑應該是絕對路徑。

  • <!DOCTYPE HTML>文件型別的宣告

問題:

IE6瀏覽器,當我們沒有書寫這個文件宣告的時候,會觸發IE6瀏覽器的怪異解析現象。

解決:

書寫文件宣告。

  • IE6預設行高

問題:

IE6、IE7、遨遊瀏覽器;設定的文字高度超出盒模型內容區域設定的高度時會影響佈局。

解決:

給超出高度的標籤設定overflow:hidden;或者將文字的行高line-height設定為小於塊的高度。

  • IE6 3px的bug

問題:

IE6浮動元素與非浮動元素處於一行有預設的3px間距。

解決:

設定所有元素浮動。

  • IE6只支援a連結的hover

問題:

IE6只支援a的hover不支援其他元素的hover。

解決:

使用JS模擬a:hover或者合理巢狀a連結。

  • IE6透明rgba與opacity

問題:

IE6不支援此兩種透明的設定方法。

解決:

使用IE6當中的濾鏡filter替代掉,如:opacity:0.6;_filter:alpha(opacity=60)。

  • IE6不支援min/max-height

問題:

IE6不支援min/max-height。

解決:

為IE6單獨設定hack,即_height:最小高度值;_width:最小寬度值;

  • IE6li的間距問題

問題:

IIE6瀏覽器 li標籤設定寬高,且li裡面的元素髮生了浮動。

解決:

  1. li不設定寬高。
  2. li內部元素不浮動。
  • a連結點選時有藍色邊框

問題:

a連結點選時有藍色邊框。

解決:

a:focus { outline: none 0; }
  • li在IE6自適應消失

問題:

如果li中有塊元素在IE6下雖然浮動,預設寬度是100%而不是自適應。

解決:

  1. li設定固定寬度
  2. display:inline_block;