前端常見的兼容問題

市場上瀏覽器種類很多,不同瀏覽器的內核也不盡相同,所以各個瀏覽器對網頁的解析存在一定的差異。

瀏覽器內核主要分爲兩種,一是渲染引擎,另一個是js 引擎,內核更加傾向於說渲染引擎。

常見的兼容性問題:

(一)不同瀏覽器的標籤默認的外補丁( margin )和內補丁(padding)差異較大。

解決方案: css 裏增加通配符 * { margin: 0; padding: 0; }

(二)img圖片有默認的間距? 及時你在style裏面添加了 通配符:{margin:0;padding:0;也無濟於事}

解決方案:使用float 爲img 佈局

(三)IE9以下的瀏覽器不能使用opacity (opacity意爲不透明)

解決方案:IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。FF:opacity:0.6。

(四)cursor:hand 顯示手型在safari 上不支持 safari也就是蘋果瀏覽器

解決方案:統一使用 cursor:pointer

(五)兩個塊級元素,父元素設置了overflow:auto;子元素設置了position:relative ;且高度大於父元素,在IE6、IE7會被隱藏而不是溢出;

解決方案:父級元素設置position:relative

(六)innerText在IE中能正常工作,但在FireFox中卻不行. 需用textContent。

解決方案:
if(navigator.appName.indexOf("Explorer")  >   -1){
       document.getElementById('element').innerText   =  "my   text";
}   else{
        document.getElementById('element').textContent  =   "my   text";
}

(七)FF和IE的盒子(box)模型解釋不一致導致相差2px
box.style{width:100;border1px;} 
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;
(八)Div的垂直居中問題

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

(九)元素水平居中問題

FF: margin:0auto;

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

(十)居中問題?

div裏面的文字內容,IE默認是居中顯示的,但是FF是左邊對齊顯示

解決方案:添加一個margin 0 aotu;

 

後續會繼續更新.....

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章