常見的瀏覽器兼容性問題大彙總

1 ie6.0橫向margin加倍

產生因素:塊屬性、float、有橫向margin。
解決方法:display:inline;

2 ie6.0下默認有行高

解決方法:overflow:hidden;或font-size:0;或line-height:xx px;

3 在各個瀏覽器下img有空隙(原因是:回車。)

解決方法:讓圖片浮動。

4 一個父標籤與幾個子標籤嵌套,父標籤不浮動,子標籤float,子標籤不撐開父的高度。

解決方法:
a 在子標籤最後清浮動{<div style="height:0;clear:both;">&nbsp;</div>}
b 父標籤添加{overflow:hidden;}
c 給父標籤設置高度

5 Ie6下,不識別最大寬、高度和最小寬高度,意即min-width/heightMax-width/heightie6中沒效果,

解決方法:
(1):

.abc{border:1px blue solid;width:200px;height:200px;}
html>body .abc{width:auto;height:auto;min-width:200px;min-height:200px;}

(2):

.abc{width:200px;height:200px;_width:200px;_height:200px;}

(因爲ie6有一個特徵,當定義一個高度時,如果內容超過高度,元素會自動調整高度。)

6 Ie6裏面:如li設寬、高,並且li裏面的標籤浮動,那麼li之間會有間距

解決方法:li不設寬、高或者li內的標籤不浮動

7 li之間有間距

解決方法:li 設置vertical-align:middle;

8 3像素問題:ie6下,當浮動元素與流動元素並列顯示時,他們之間會存在三像素問題。

解決方法:用hack技術, 例如:所有瀏覽器通用 height:100px; 
                                                  ie6專用_height:100px;
                                                  ie7專用*+height:100px; 
                                                  ie6/ie7共用*height:100px;

9 當定義行內元素爲包含框時,且包含框包含的絕對定位元素以百分比爲單位進行定位時,會出現混亂。

解決方法:在行內元素里加入{zoom:1;}

10 當多個浮動元素中間夾雜着HTML註釋語句時,如果浮動元素寬度爲100%,則在下一行多顯示一個上一行最後一個字符。

解決辦法:給浮動元素添加display:inline;。

11 opacity 定義元素的不透明度

filter:alpha(opacity=80);/*ie支持該屬性*/
opacity:0.8;/*支持css3的瀏覽器*/

12 兩個塊元素,豎向的margin值不增加,會重疊,其間距爲最大margin值。

13 優先級:被!important 註明的css屬性具有最高優先級(.abc{color:red !important;})。但在ie6中!important具有一個bug:在同一組css屬性中,!important不起作用。

14 火狐不識別background-position-ybackground-position-x;

---------------------------2014.01.10補充-------------------------------

15 ie6 不支持 fixed

/*對於非IE6可以這樣寫*/
#top{  
    position:fixed;  
    bottom:0;  
    right:20px;  
}  

/*但是IE6是不支持fixed定位的,需要另外重寫*/
#top{  
    position:fixed;  
    _position:absolute;  
    top:0;  
    right:20px;  
    _bottom:auto;  
    _top:expression(eval(document.documentElement.scrollTop));
}  

/*使用hack使IE6實現該效果,但這個東東會閃爍,需要以下代碼*/
*html{  
    background-image:url(about:blank);  
    background-attachment:fixed;  
}  

/*使固定在頂部*/
#top{  
    _position:absolute;  
    _bottom:auto;  
    _top:expression(eval(document.documentElement.scrollTop));  
}  

/*固定在底部*/
#top{  
    _position:absolute;  
    _bottom:auto;  
    _top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop)||0)-(parseInt(this.currentStyle.marginBottom)||0)));  
}  
/*垂直居中*/
#top{
    position:fixed;
    top:50%;
    margin-top:-50px;
    _position:absolute;
    _top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight/2)); 
}

16 解決 ie6 最大、最小寬高 hack方法

/* 最小寬度 */
.min_width{
    min-width:300px;
    _width:expression(parseInt(this.clientWidth) < 300 ? "300px" : this.clientWidth);
}

/* 最大寬度 */
.max_width{
   max-width:600px;
   _width:expression(parseInt(this.clientWidth) > 600 ? "600px" : this.clientWidth);
}

/* 最小高度 */
.min_height{
   min-height:200px;
   _height:expression(parseInt(this.clientHeight) < 200 ? "200px" : this.clientHeight);
}

/* 最大高度 */
.max_height{
   max-height:400px;
   _height:expression(parseInt(this.clientHeight) > 400 ? "400px" : this.clientHeight);
}

17 z-index不起作用的 bug

1)ie6下 首先講講第一種z-index無論設置多高都不起作用情況。這種情況發生的條件有三個:
1、父標籤position屬性爲relative
2、問題標籤含有浮動(float)屬性。

2)所有瀏覽器:它只認第一個爸爸
層級的高低不僅要看自己,還要看自己的老爸這個後臺是否夠硬。用術語具體描述爲:
父標籤position屬性爲relativeabsolute時,子標籤的absolute屬性是相對於父標籤而言的。而在IE6下,層級的表現有時候不是看子標籤的z-index多高,而要看它們的父標籤的z-index誰高誰低。

18 ie各個版本hack

/*類內部hack:*/
    .header {_width:100px;}            /* IE6專用*/
    .header {*+width:100px;}        /* IE7專用*/
    .header {*width:100px;}            /* IE6、IE7共用*/
    .header {width:100px\0;}        /* IE8、IE9共用*/
    .header {width:100px\9;}        /* IE6、IE7、IE8、IE9共用*/
    .header {width:330px\9\0;}    /* IE9專用*/

/*選擇器Hack:*/
    *html .header{}        /*IE6*/ 
    *+html .header{}    /*IE7*/ 

Ø JavaScript

  1. HTML對象獲取問題

  2. const問題

  3. event.x與event.y問題

  4. window.location.href問題

  5. frame問題

  6. 模態和非模態窗口問題

  7. firefox與IE的父元素(parentElement)的區別

  8. document.formName.item(”itemName”) 問題

  9. 集合類對象問題

  10. 自定義屬性問題

  11. input.type屬性問題

  12. event.srcElement問題

  13. body載入問題

  14. 事件委託方法

  15. Table操作問題

  16. 對象寬高賦值問題

Ø CSS

  1. cursor:hand VS cursor:pointer

  2. innerText在IE中能正常工作,但在FireFox中卻不行.

  3. CSS透明

  4. css中的width和padding

  5. FF和IE BOX模型解釋不一致導致相差2px

  6. IE5 和IE6的BOX解釋不一致

  7. ul和ol列表縮進問題

  8. 元素水平居中問題

  9. Div的垂直居中問題

  10. margin加倍的問題

  11. IE與寬度和高度的問題

  12. 頁面的最小寬度

  13. DIV浮動IE文本產生3象素的bug

  14. IE捉迷藏的問題

  15. float的div閉合;清除浮動;自適應高度

  16. 高度不適應

  17. IE6下圖片下有空隙產生

  18. 對齊文本與文本輸入框

  19. LI中內容超過長度後以省略號顯示

  20. 爲什麼web標準中IE無法設置滾動條顏色了

  21. 爲什麼無法定義1px左右高度的容器

  22. 鏈接(a標籤)的邊框與背景

  23. 超鏈接訪問過後hover樣式就不出現的問題

  24. FORM標籤

  25. 屬性選擇器(這個不能算是兼容,是隱藏css的一個bug)

  26. 爲什麼FF下文本無法撐開容器的高度

  27. 關於空格的解釋

  28. 條件註釋

  29. 強制渲染

  30. js兼容文件

  31. 瀏覽器識別符

Ø JavaScript

  1. HTML對象獲取問題
FireFox:document.getElementById("idName");
ie:document.idname或者document.getElementById("idName").

解決辦法:統一使用document.getElementById("idName");

  1. const問題
    說明:Firefox下,可以使用const關鍵字或var關鍵字來定義常量;
    IE下,只能使用var關鍵字來定義常量.
    解決方法:統一使用var關鍵字來定義常量.

  2. event.xevent.y問題
    說明:IE下,event對象有x,y屬性,但是沒有pageX,pageY屬性;
    Firefox下,event對象有pageX,pageY屬性,但是沒有x,y屬性.
    解決方法:使用mX(mX = event.x ? event.x : event.pageX;)來代替IE下的event.x或者Firefox下的event.pageX.

  3. window.location.href問題
    說明:IE或者Firefox2.0.x下,可以使用window.locationwindow.location.href;
    Firefox1.5.x下,只能使用window.location.
    解決方法:使用window.location來代替window.location.href.

  4. frame問題
    以下面的frame爲例:

<frame   src="xxx.html"   id="frameId"   name="frameName"   />

(1)訪問frame對象:
IE:使用window.frameId或者window.frameName來訪問這個frame對象. frameIdframeName可以同名。
Firefox:只能使用window.frameName來訪問這個frame對象.
另外,在IEFirefox中都可以使用window.document.getElementById("frameId")來訪問這個frame對象.
(2)切換frame內容:
在 IE和Firefox中都可以使用window.document.getElementById("testFrame").src = "xxx.html"window.frameName.location = "xxx.html"來切換frame的內容.
如果需要將frame中的參數傳回父窗口(注意不是opener,而是parent frame),可以在frame中使用parent來訪問父窗口。例如:parent.document.form1.filename.value="Aqing";

  1. 模態和非模態窗口問題
    說明:IE下,可以通過showModalDialog和showModelessDialog打開模態和非模態窗口;Firefox下則不能.
    解決方法:直接使用window.open(pageURL,name,parameters)方式打開新窗口。
    如果需要將子窗口中的參數傳遞迴父窗口,可以在子窗口中使用window.opener來訪問父窗口.
    例如:
var   parWin   =   window.opener;   
parWin.document.getElementById("Aqing").value   =   "Aqing"; 
  1. firefox與IE的父元素(parentElement)的區別
IE:obj.parentElement
firefox:obj.parentNode

解決方法: 因爲firefoxIE都支持DOM,因此使用obj.parentNode是不錯選擇.

  1. document.formName.item(”itemName”) 問題
    問題說明:IE下,可以使用document.formName.item(”itemName”)document.formName.elements ["elementName"];Firefox 下,只能使用document.formName.elements["elementName"]

解決方法:統一使用document.formName.elements["elementName"]

  1. 集合類對象問題
    問題說明:IE下,可以使用 ()[] 獲取集合類對象;Firefox下,只能使用[ ]獲取集合類對象。
    解決方法:統一使用 [] 獲取集合類對象。

  2. 自定義屬性問題
    問題說明:IE下,可以使用獲取常規屬性的方法來獲取自定義屬性,也可以使用getAttribute() 獲取自定義屬性;Firefox下,只能使用getAttribute() 獲取自定義屬性。
    解決方法:統一通過getAttribute() 獲取自定義屬性。

  3. input.type屬性問題
    問題說明:IE下input.type屬性爲只讀;但是Firefox下input.type屬性爲讀寫。
    解決辦法:不修改input.type屬性。如果必須要修改,可以先隱藏原來的input,然後在同樣的位置再插入一個新的input元素。

  4. event.srcElement問題
    問題說明:IE下,event對象有srcElement屬性,但是沒有target屬性;Firefox下,even對象有target屬性,但是沒有srcElement屬性。
    解決方法:使用srcObj = event.srcElement ?event.srcElement : event.target;
    如果考慮第8條問題,就改用myEvent代替event即可。

  5. body載入問題
    問題說明:Firefox的body對象在body標籤沒有被瀏覽器完全讀入之前就存在;而IE的body對象則必須在body標籤被瀏覽器完全讀入之後才存在。
    [注] 這個問題尚未實際驗證,待驗證後再來修改。
    [注] 經驗證,IE6、Opera9以及FireFox2中不存在上述問題,單純的JS腳本可以訪問在腳本之前已經載入的所有對象和元素,即使這個元素還沒有載入完成。

  6. 事件委託方法
    問題說明:IE下,使用document.body.onload = inject; 其中function inject()在這之前已被實現;在Firefox下,使用document.body.onload = inject();
    解決方法:統一使用document.body.onload=new Function(’inject()’); 或者document.body.onload = function(){}
    [注意] Functionfunction的區別。

  7. Table操作問題
    問題說明:ie、firefox以及其它瀏覽器對於 table 標籤的操作都各不相同,在ie中不允許對table和tr的innerHTML賦值,使用js增加一個tr時,使用appendChild方法也不管用。
    解決方法:

//向table追加一個空行:
var row = otable.insertRow(-1);var cell = document.createElement("td");cell.innerHTML = "";cell.className = "XXXX";row.appendChild(cell);

[注] 由於俺很少使用JS直接操作表格,這個問題沒有遇見過。建議使用JS框架集來操作table,如JQuery。

  1. 對象寬高賦值問題
    問題說明:FireFox中類似obj.style.height = imgObj.height的語句無效。

Ø CSS

  1. cursor:hand VS cursor:pointer
    firefox不支持hand,但ie支持pointer
    解決方法: 統一使用pointer

  2. innerText在IE中能正常工作,但在FireFox中卻不行.
    需用textContent
    解決方法:

if(navigator.appName.indexOf("Explorer")   >   -1){
        document.getElementById('element').innerText   =   "my   text";
}   else{
        document.getElementById('element').textContent   =   "my   text";
}
  1. CSS透明
    IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。
    FF:opacity:0.6。
    opacity 透明,子元素會繼承透明屬性。解決方式:1、使用 background:rgba(0,0,0,.6) //IE8及以下無效果。 2、使用定位,背景色與子元素處於同級關係。

  2. css中的width和padding
    在IE7和FF中width寬度不包括padding,在Ie6中包括padding.

  3. FF和IEBOX模型解釋不一致導致相差2px
    box.style{width:100;border 1px;}
    ie理解爲box.width = 100
    ff理解爲box.width = 100 + 1*2 = 102 //加上邊框2px

解決方法:div{margin:30px!important;margin:28px;}
注意這兩個margin的順序一定不能寫反, IE不能識別!important這個屬性,但別的瀏覽器可以識別。所以在IE下其實解釋成這樣:div{maring:30px;margin:28px}
重複定義的話按照最後一個來執行,所以不可以只寫margin:XXpx!important;

  1. IE5 和IE6的BOX解釋不一致
    IE5下div{width:300px;margin:0 10px 0 10px;}
    div 的寬度會被解釋爲300px-10px(右填充)-10px(左填充),最終div的寬度爲280px,而在IE6和其他瀏覽器上寬度則是以 300px+10px(右填充)+10px(左填充)=320px來計算的。這時我們可以做如下修改 div{width:300px!important;width :340px;margin:0 10px 0 10px}

  2. ulol列表縮進問題
    消除ul、ol等列表的縮進時,樣式應寫成:list-style:none;margin:0px;padding:0px;
    經驗證,在IE中,設置margin:0px可以去除列表的上下左右縮進、空白以及列表編號或圓點,設置padding對樣式沒有影響;在 Firefox 中,設置margin:0px僅僅可以去除上下的空白,設置padding:0px後僅僅可以去掉左右縮進,還必須設置list- style:none才能去除列表編號或圓點。也就是說,在IE中僅僅設置margin:0px即可達到最終效果,而在Firefox中必須同時設置margin:0px、 padding:0px以及list-style:none三項才能達到最終效果。

  3. 元素水平居中問題
    FF: margin:0 auto;

IE: 父級{ text-align:center; }

  1. Div的垂直居中問題
    vertical-align:middle; 將行距增加到和整個DIV一樣高:line-height:200px; 然後插入文字,就垂直居中了。缺點是要控制內容不要換行。

  2. margin加倍的問題
    設置爲float的div在ie下設置的margin會加倍。這是一個ie6都存在的bug。解決方案是在這個div裏面加上display:inline;

例如:

<div id=”imfloat”>
相應的css爲
#imfloat{ 
float:left; 
margin:5px; 
display:inline;}
  1. IE與寬度和高度的問題
    IE不認得min-這個定義,但實際上它把正常的widthheight當作有min的情況來使。這樣問題就大了,如果只用寬度和高度,正常的瀏覽器裏這兩個值就不會變,如果只用min-widthmin-height的話,IE下面根本等於沒有設置寬度和高度。

比如要設置背景圖片,這個寬度是比較重要的。要解決這個問題,可以這樣:

#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}
  1. 頁面的最小寬度
    如上一個問題,IE不識別min,要實現最小寬度,可用下面的方法:
#container{ min-width: 600px; width:expression(document.body.clientWidth< 600? "600px": "auto" );} 

第一個min-width是正常的;但第2行的width使用了Javascript,這隻有IE才認得,這也會讓你的HTML文檔不太正規。它實際上通過Javascript的判斷來實現最小寬度。

  1. DIV浮動IE文本產生3象素的bug
    左邊對象浮動,右邊採用外補丁的左邊距來定位,右邊對象內的文本會離左邊有3px的間距.
#box{ float:left; width:800px;} 
#left{ float:left; width:50%;} 
#right{ width:50%;} 
*html #left{ margin-right:-3px; //這句是關鍵} 
<div id="box">
<div id="left"></div>
<div id="right"></div>
</div>
  1. IE捉迷藏的問題
    div應用複雜的時候每個欄中又有一些鏈接,DIV等這個時候容易發生捉迷藏的問題。

有些內容顯示不出來,當鼠標選擇這個區域是發現內容確實在頁面。

解決辦法:對#layout使用line-height屬性或者給#layout使用固定高和寬。頁面結構儘量簡單。

  1. floatdiv閉合;清除浮動;自適應高度
    ① 例如:<div id=”floatA”><div id=”floatB”><div id=”NOTfloatC”>

這裏的NOTfloatC並不希望繼續平移,而是希望往下排。(其中floatA、floatB的屬性已經設置爲float:left;)

這段代碼在IE中毫無問題,問題出在FF。原因是NOTfloatC並非float標籤,必須將float標籤閉合。在<div class=”floatB”><div class=”NOTfloatC”>之間加上<div class=”clear”>這個div一定要注意位置,而且必須與兩個具有float屬性的div同級,之間不能存在嵌套關係,否則會產生異常。並且將clear這種樣式定義爲爲如下即可:.clear{clear:both;}

②作爲外部 wrapperdiv 不要定死高度,爲了讓高度能自適應,要在wrapper裏面加上overflow:hidden; 當包含floatbox的時候,高度自適應在IE下無效,這時候應該觸發IE的layout私有屬性(萬惡的IE啊!)用zoom:1;可以做到,這樣就達到了兼容。
例如某一個wrapper如下定義:

.colwrapper{overflow:hidden; zoom:1; margin:5px auto;}

③對於排版,我們用得最多的css描述可能就是float:left.有的時候我們需要在n欄的float div後面做一個統一的背景,譬如:

<div id=”page”>

<div id=”left”></div>
<div id=”center”></div>
<div id=”right”></div>

</div>

比如我們要將page的背景設置成藍色,以達到所有三欄的背景顏色是藍色的目的,但是我們會發現隨着left center right的向下拉長,而page居然保存高度不變,問題來了,原因在於page不是float屬性,而我們的page由於要居中,不能設置成float,所以我們應該這樣解決:

<div id=”page”>

<div id=”bg” style=”float:left;width:100%”>

<div id=”left”></div>
<div id=”center”></div>
<div id=”right”></div>

</div>

</div>

再嵌入一個float left而寬度是100%的DIV解決之。

或者另一種方法:用選擇器(:after)在page之後插入一個空標籤,並清除浮動

.page:after {  content: ""; display: table; clear: both; }

④萬能float 閉合(非常重要!)

關於 clear float 的原理可參見 [How To Clear Floats Without Structural Markup],將以下代碼加入Global CSS 中,給需要閉合的div加上class="clearfix" 即可,屢試不爽。

.clearfix:after { content:"."; display:block; height:0; clear:both; visibility:hidden; } 
.clearfix { display:inline-block; } 

.clearfix {display:block;} 

或者這樣設置:.hackbox{ display:table; //將對象作爲塊元素級的表格顯示}

  1. 高度不適應
    高度不適應是當內層對象的高度發生變化時外層高度不能自動進行調節,特別是當內層對象使用marginpadding時。

例:

#box { } 
#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; } 
<div id="box">
<p>p對象中的內容</p>
</div>

解決技巧:在P對象上下各加2個空的div對象CSS代碼{height:0px;overflow:hidden;}或者爲DIV加上border屬性。

  1. IE6下圖片下有空隙產生
    解決這個BUG的技巧有很多,可以是改變html的排版,或者設置imgdisplay:block或者設置vertical-align屬性爲vertical-align:top/bottom/middle/text-bottom 都可以解決.

  2. 對齊文本與文本輸入框
    加上vertical-align:middle;

<style type="text/css">
<!--
input { 
width:200px; 
height:30px; 
border:1px solid red; 
vertical-align:middle; 
} 
-->
</style>

經驗證,在IE下任一版本都不適用,而ff、opera、safari、chrome均OK!

  1. LI中內容超過長度後以省略號顯示
    此技巧適用與IE、Opera、safari、chrome瀏覽器,FF暫不支持。
<style type="text/css">
<!--
li { 
width:200px; 
white-space:nowrap; 
text-overflow:ellipsis; 
-o-text-overflow:ellipsis; 
overflow: hidden; 
}

-->
</style>
  1. 爲什麼web標準中IE無法設置滾動條顏色了
    解決辦法是將body換成html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style type="text/css">
<!-- 
html { 
scrollbar-face-color:#f6f6f6; 
scrollbar-highlight-color:#fff; 
scrollbar-shadow-color:#eeeeee; 
scrollbar-3dlight-color:#eeeeee; 
scrollbar-arrow-color:#000; 
scrollbar-track-color:#fff; 
scrollbar-darkshadow-color:#fff; 
} 
-->
</style>
  1. 爲什麼無法定義1px左右高度的容器
    IE6下這個問題是因爲默認的行高造成的,解決的技巧也有很多:
    例如:overflow:hidden  zoom:0.08   line-height:1px

16.怎麼樣才能讓層顯示在FLASH之上呢

解決的辦法是給FLASH設置透明

<param name="wmode" value="transparent" />
  1. 鏈接(a標籤)的邊框與背景
    a鏈接加邊框和背景色,需設置 display: block, 同時設置 float: left 保證不換行。參照menubar, 給 a 和menubar設置高度是爲了避免底邊顯示錯位, 若不設 height, 可以在menubar中插入一個空格。

  2. 超鏈接訪問過後hover樣式就不出現的問題
    被點擊訪問過的超鏈接樣式不在具有hover和active了,很多人應該都遇到過這個問題,解決技巧是改變CSS屬性的排列順序: L-V-H-A

Code:

<style type="text/css">
<!--
a:link {} 
a:visited {} 
a:hover {} 
a:active {} 
-->
</style>
  1. FORM標籤
    這個標籤在IE中,將會自動margin一些邊距,而在FF中margin則是0,因此,如果想顯示一致,所以最好在css中指定marginpadding,針對上面兩個問題,我的css中一般首先都使用這樣的樣式ul,form{margin:0;padding:0;}

  2. 屬性選擇器(這個不能算是兼容,是隱藏css的一個bug)

p[id]{}
div[id]{} 

這個對於IE6.0和IE6.0以下的版本都隱藏,FF和OPera作用.屬性選擇器和子選擇器還是有區別的,子選擇器的範圍從形式來說縮小了,屬性選擇器的範圍比較大,如p[id]中,所有p標籤中有id的都是同樣式的.

  1. 爲什麼FF下文本無法撐開容器的高度
    標準瀏覽器中固定高度值的容器是不會象IE6裏那樣被撐開的,那我又想固定高度,又想能被撐開需要怎樣設置呢?辦法就是去掉height設置min-height:200px; 這裏爲了照顧不認識min-height的IE6 可以這樣定義:
{ 
height:auto!important; 
height:200px; 
min-height:200px; 
} 

  1. IE和FireFox 對空格的尺寸解釋不同,FireFox爲4px,IE爲8px; FireFox對div與div之間的空格是忽略的,但是IE是處理的。因此在兩個相鄰div之間不要有空格跟回車,否則可能造成不同瀏覽間之間格式不正確,比如著名的3px偏差(多個img標籤連着,然後定義float: left;結果在firefox裏面正常,而IE裏面顯示的每個img都相隔了3px。我把標籤之間的空格都刪除都沒有作用。解決方法是在img外面套li,並且對li定義margin: 0; 避免方式:在必要的時候不要無視 list 標籤)而且原因難以查明。

  2. 條件註釋

<link rel="stylesheet" type="text/css" href="css.css" />

<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="ie7.css" />
<![endif]-->

<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->

lte – 小於等於
lt – 小於
gte – 大於等於
gt – 大於
! – 不等於

45.強制渲染

<meta http-equiv=X-UA-Compatible content=IE=EmulateIE7>    //這句話的意思是強制使用IE7模式來解析網頁代碼!

<meta http-equiv=“X-UA-Compatible” content=“IE=8″>

<meta http-equiv=“X-UA-Compatible” content=“chrome=1″ />    //Google Chrome Frame也可以讓IE用上Chrome的引擎

<meta http-equiv=“X-UA-Compatible” content=“IE=EmulateIE7″><!– IE7 mode –> 或者 <meta http-equiv=“X-UA-Compatible” content=“IE=7″><!– IE7 mode –>       //強制IE8使用IE7模式來解析

<meta http-equiv=“X-UA-Compatible” content=“IE=6″><!– IE6 mode –>   <meta http-equiv=“X-UA-Compatible” content=“IE=5″><!– IE5 mode –>   //強制IE8使用IE6或IE5模式來解析

<meta http-equiv=“X-UA-Compatible” content=“IE=5; IE=8″ />   //一個特定版本的IE支持所要求的兼容性模式多於一種

46.js兼容文件

使IE5,IE6兼容到IE7模式(推薦)

<![if lt IE 7]>
<script src=”http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE7.js” type=”text/javascript”></script>
<![endif]>
使IE5,IE6,IE7兼容到IE8模式

<![if lt IE 8]>
<script src=”http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE8.js” type=”text/javascript”></script>
<![endif]>
使IE5,IE6,IE7,IE8兼容到IE9模式

<![if lt IE 9]>
<script src=”http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js”></script>
<![endif]>
  1. 瀏覽器識別符
p{ _color:red; }           IE6 專用
*html p{ color:#red; }  IE6 專用
p{ +color:red; }           IE6,7 專用
p{ *color:red; }           IE6,7 專用
*html p{ color:red; }    IE6,7 專用
p{*+color: red;}          IE7 專用
Body> p{ color: red; }  屏蔽 IE6
p{ color:red\9; }          IE8   

Firefox: -moz-
Safari: -webkit-
Opera: -o-
IE: -ms-
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章