關(guān)于瀏覽器的兼容性問題和css hsck
五大主流瀏覽器包括:
chorme (webkit)
safari ?(webkit)
IE (Trident)
firefox(Gecko)
Orpera(Presto),現(xiàn)在opera內(nèi)核已經(jīng)改啦,基于webkit。
既然瀏覽器不同,那么當然去渲染效果就不一樣了掠河,也就出現(xiàn)了我們最頭疼的問題--web應(yīng)用的兼容性問題。這里最煩人的就是IE啦,也就是我們經(jīng)常開玩笑的說只有有兼容性問題就說是IE6/7/8恼琼,當然各種瀏覽器模式下都有自己的弊端,對于IE的處理我們一般通過css hack(盒模型)來處理屏富,也就是在寫樣式的時候差別對待晴竞,通過給樣式加“+”、“-”狠半、“\\”颓鲜、“*”等符號標示來分別處理不同瀏覽器的樣式。
1典予、png24位的圖片在IE6瀏覽器上出現(xiàn)背景甜滨,解決方案是做成PNG8,也可以引用一段腳本來處理瘤袖。
2衣摩、瀏覽器默認的margin和padding不同,解決方案是加一個全局的*{marign:0;padding:0;}來統(tǒng)一捂敌;
3艾扮、IE6雙邊距bug:塊屬性標簽float后,又有橫行的marign情況下占婉,在IE6顯示margin比設(shè)置的大泡嘴。
4、浮動IE產(chǎn)生的雙倍距離(IE6雙倍邊距問題:在IE6下逆济,如果對元素設(shè)置了浮動酌予,同時又設(shè)置了margin-left或者margin-right,margin值會加倍。)
#box {float:left;width:10px;marign:0 0 0 100px;}
這種情況下IE會產(chǎn)生20px 的距離奖慌,解決方案是在float的標簽式控制中加入_display:inline;
將其轉(zhuǎn)化為行內(nèi)屬性(_這個符號只有IE6會識別)抛虫;
5、漸進識別對的方式简僧,從總體中逐漸排除局部建椰。
首先,巧妙的使用'\\9'這一標記岛马,將IE瀏覽器從所有的情況中分離出來棉姐。
接著屠列,再次使用'+'將IE6、IE7伞矩、IE8分離開來脸哀,這樣IE8已經(jīng)獨立識別。
css
? ? ?.bb{
? ? ? ? ? ? background-color:red; ? ? ? ? ? ? ? ?/*所有識別*/
? ? ? ? ? ?.background-color:red\9; ? ? ? ? ? /*IE6扭吁、IE7撞蜂、IE8識別*/
? ? ? ? ? ? +background-color:red; ? ? ? ? ? ? /*IE6、IE7識別*/
? ? ? ? ? ? _background-color:red; ? ? ? ? ? ? /*IE6識別*/
? ?}
6侥袜、IE下蝌诡,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性,也可以使用getAttribute()獲取自定義屬性枫吧,firefox下浦旱,只能使用getAattribute()獲取自定義屬性;
? ? ? 解決方法:統(tǒng)一通過getAttribute()獲取自定義屬性九杂。
7颁湖、IE下,event對象有x,y屬性例隆,但是沒有pageX,pageY屬性甥捺;
? ? ? Firxfox下,event對象沒有x,y屬性镀层,但是有pageX,pageY屬性镰禾;
? ? ? 解決方法:(條件注釋)缺點是在IE瀏覽器下可能會增加額外的HTTP請求次數(shù)。
8唱逢、chrome中文界面下默認會將小于12px的文本強制按照12px顯示;
? ? ?解決方法:可以通過加入css屬性-webkit-text-size-adjust:none;
9吴侦、超鏈接訪問過后hover樣式后hover和active就不出現(xiàn)啦;
? ? ? 解決方法:改變css屬性的排列順序:L-V-H-A
10、怪異模式問題:漏寫DTD聲明坞古,F(xiàn)irxfox仍然會按照標準模式來解析網(wǎng)頁备韧,但在IE中會觸發(fā)怪異模式。為避免怪異模式給我們帶來的不必要的麻煩痪枫,最好養(yǎng)成書寫DTD聲明的好習(xí)慣≈茫現(xiàn)在可以使用【html5】(http://www.w3.org/TR/html5/single-page.html)推薦的寫法:`<doctype html>`
11、上下marign重合問題
? ? ? IE和Firxfox都存在听怕,相鄰的兩個div的marign-left和marign-right不會重合捧挺,但是marign-top和 ?margin-bottom卻會發(fā)生重合。
? ? ? 解決方法:養(yǎng)成良好的代碼編寫習(xí)慣:同時采用margin-top或者同時采用margin-bottom.
12/