CSS 多瀏覽器相容性問題及解決方案

2021-06-16 20:08:14 字數 2920 閱讀 3772

相容性處理要點

1、doctype 影響 css 處理 

2、ff: 設定 padding 後, div 會增加 height 和 width, 但 ie 不會, 故需要用 !important 多設乙個 height 和 width 

3、ff: 支援 !important, ie 則忽略, 可用 !important 為 ff 特別設定樣式 

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

5、在mozilla firefox和ie中的box模型解釋不一致導致相差2px解決方法: 

div 

注意這兩個margin的順序一定不能寫反,!important這個屬性ie不能識別,但別的瀏覽器可以識別。所以在ie下其實解釋成這樣: 

div 

重複定義的話按照最後乙個來執行,所以不可以只寫margin:xxpx!important; 

瀏覽器差異 

1、ul和ol列表縮排問題

消除ul、ol等列表的縮排時,樣式應寫成:list-style:none;margin:0px;padding:0px; 

其中margin屬性對ie有效,padding屬性對firefox有效。 

[注]經驗證,在ie中,設定margin:0px可以去除列表的上下左右縮排、空白以及列表編號或圓點,設定padding對樣式沒有影響;在 firefox 中,設定margin:0px僅僅可以去除上下的空白,設定padding:0px後僅僅可以去掉左右縮排,還必須設定list- style:none才 能去除列表編號或圓點。也就是說,在ie中僅僅設定margin:0px即可達到最終效果,而在firefox中必須同時設定margin:0px、 padding:0px以及list-style:none三項才能達到最終效果。 

2、css透明問題

ie:filter:progid:dximagetransform.microsoft.alpha(style=0,opacity=60)。 

ff:opacity:0.6。 

[注] 最好兩個都寫,並將opacity屬性放在下面。 

3、css圓角問題

ie:ie7以下版本不支援圓角。 

ff: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz- border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz- border- radius- bottomright:4px;。

[注] 圓角問題是css中的經典問題,建議使用jquery框架集來設定圓角,讓這些複雜的問題留給別人去想吧。不過jquery的圓角只看到支援整個區域的圓角,沒有支援邊框的圓角,不過這個邊框的圓角可以通過一些簡單的手段來實現,下次有機會介紹下。 

4、cursor:hand vs cursor:pointer

問題說明:firefox不支援hand,但ie支援pointer ,兩者都是手形指示。 

解決方法:統一使用pointer。 

5、字型大小定義不同

對字型大小small的定義不同,firefox中為13px,而ie中為16px,差別挺大。 

解決方法:使用指定的字型大小如14px。 

並列排列的多個元素(或者鏈結)的div和div之間,**中的空格和回車在firefox中都會被忽略,而ie中卻預設顯示為空格(約3px)。 

6、css雙線凹凸邊框

ie:border:2px outset;。 

ff: -moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8 white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040 #808080; 

瀏覽器bug

1、ie的雙邊距bug

設定為float的div在ie下設定的margin會加倍。這是乙個ie6都存在的bug。 

解決方案:在這個div裡面加上display:inline; 

例如: 

<#div id=」imfloat」> 

相應的css為 

以下為引用的內容: 

複製**

**如下:

#iamfloat 

#iamfloat 

關於css中的問題實在太多了,甚至同樣的css定義在不同的頁面標準中的顯示效果都是不一樣的。乙個合乎發展的建議是,頁面採用標準xhtml標準編寫,較少使用table,css定義盡量依照標準dom,同時兼顧ie、firefox、opera等主流瀏覽器。很多情況下,ff和 opera的css解釋標準更貼近css標準,也更具有規範性。 

2、ie選擇符空格bug

今天在給部落格的段落樣式設定首字元樣式的時候發現,原來乙個空格也可以使樣式失效。 

請看以下**: 

複製**

**如下: 

對於世界而言,你是乙個人;但是對於某個人,你是他的整個世界。縱然傷心,也不要愁眉不展,因為你不知是誰會愛上你的笑容。

[/code] 

複製**

**如下: 

對於世界而言,你是乙個人;但是對於某個人,你是他的整個世界。縱然傷心,也不要愁眉不展,因為你不知是誰會愛上你的笑容。

這段**對的首字元樣式定義在ie6上看是沒有效果的(ie7沒測試),而在p:first-letter和加上空格,也就是p:first-letter 後,顯示就正常了。但是同樣的**,在firefox下看是正常的。按道理說,p:first-letter的寫法是沒錯的。那麼問題出在**呢?答案是偽類中的連字元」-」。ie有個bug,在處理偽類時,如果偽類的名稱中帶有連字元」-」,偽類名稱後面就得跟乙個空格,不然樣式的定義就無效。而在ff中,加不加空格都可以正常處理。

CSS 多瀏覽器相容性問題及解決方案

相容性處理要點 1 doctype 影響 css 處理 2 ff 設定 padding 後,div 會增加 height 和 width,但 ie 不會,故需要用 important 多設乙個 height 和 width 3 ff 支援 important,ie 則忽略,可用 important ...

CSS瀏覽器相容性問題詳解

對css縮寫的支援問題 不論是ie 還是ff對css的縮寫都有一小點問題 比如 border 0xp solid fff 兩個瀏覽器支援都沒有問題 但對於四個邊的magin不同情況下,就不能用這種縮寫了,無論是ie還是ff又會出現邊界解釋錯誤,而導致頁面變形 正確縮寫 border width 0p...

瀏覽器相容性問題

苦惱的區別 1.image repeat 在火狐裡比較正常,可是在ie中一直repeat.背景是乙個關閉的x號,div設定的backgourn image url xx 結果在ie中卻不行,最後找到原因是ie中要顯式的寫上image repeat norepeat這屬性,還有好多的差異,明天 去了 ...