瀏覽器相容性處理要點

2021-07-15 06:01:10 字數 2921 閱讀 5217

相容性處理要點

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中,加不加空格都可以正常處理。

瀏覽器相容性

瀏覽器相容性是乙個很長久的話題,之所以前端需要面對瀏覽器相容性,是因為使用者的環境有不同的平台,不同的瀏覽器。不同的廠商之間為了相互競爭,對標準的實現不一樣。不同的瀏覽器有不同的核心。即使同乙個瀏覽器也有不同的版本,不同的版本對同一特性的支援情況也不盡相同。也可能某個瀏覽器的某個版本針對某個特性存在...

瀏覽器相容性

所謂的瀏覽器相容性問題,是指因為不同的瀏覽器對同一段 有不同的解析,造成頁面顯示效果不統一的情況。在大多數情況下,我們的需求是,無論使用者用什麼瀏覽器來檢視我們的 或者登陸我們的系統,都應該是統一的顯示效果。所以瀏覽器的相容性問題是前端開發人員經常會碰到和必須要解決的問題。在學習瀏覽器相容性之前,我...

瀏覽器相容性

trident ie核心 gecko firefox 核心 webkit chrome,safari blink webkit 的分支 presto 是挪威產瀏覽器 opera 的 前任 核心,為何說是 前任 因為最新的 opera 瀏覽器早已將之拋棄從而投入到了谷歌大本營。移動端的瀏覽器核心主要說...