IE瀏覽器和火狐瀏覽器兼容問題_第1頁
IE瀏覽器和火狐瀏覽器兼容問題_第2頁
IE瀏覽器和火狐瀏覽器兼容問題_第3頁
IE瀏覽器和火狐瀏覽器兼容問題_第4頁
IE瀏覽器和火狐瀏覽器兼容問題_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、IE瀏覽器和火狐瀏覽器兼容問題CSS篇 一、cssdiv 樣式 IE與FF兼容問題匯總 IE和火狐的css兼容性問題歸總 CSS對瀏覽器器的兼容性具有很高的價值,通常情況下IE和火狐瀏覽器存在很大的解析差異,這里介紹一下兼容要點。 1、DOCTYPE 影響 CSS 處理 2、FF: div 設置 margin-left, margin-right 為 auto 時已經(jīng)居中, IE 不行 3、FF: body 設置 text-align 時, div 需要設置 margin: auto(主要是 margin-left,margin-right) 方可居中 4、FF: 設置 padding 后,

2、div 會增加 height 和 width, 但 IE 不會, 故需要用 !important 多設一個 height 和 width 5、FF: 支持 !important, IE 則忽略, 可用 !important 為 FF 特別設置樣式,值得注意的是,一定要將xxxx !important 這句放置在另一句之上 6、div 的垂直居中問題: vertical-align:middle; 將行距增加到和整個DIV一樣高 line-height:200px; 然后插入文字,就垂直居中了。缺點是要控制內容不要換行 7、cursor: pointer 可以同時在 IE FF 中顯示游標手指狀

3、, hand 僅 IE 可以 8、FF: 鏈接加邊框和背景色,需設置 display: block, 同時設置 float: left 保證不換行。參照 menubar, 給 a 和 menubar 設置高度是為了避免底邊顯示錯位, 若不設 height, 可以在 menubar 中插入一個空格。 9、在mozilla firefox和IE中的BOX模型解釋不一致導致相差2px解決方法:divmargin:30px!important;margin:28px; 注意這兩個margin的順序一定不能寫反,據(jù)阿捷的說法!important這個屬性IE不能識別,但別的瀏覽器可以識別。所以在IE下其實

4、解釋成這樣:divmaring:30px;margin:28px 重復定義的話按照最后一個來執(zhí)行,所以不可以只寫margin:XXpx!important; 10、IE5 和IE6的BOX解釋不一致 IE5下divwidth:300px;margin:0 10px 0 10px; div的寬度會被解釋為300px-10px(右填充)-10px(左填充)最終div的寬度為280px,而在IE6和其他瀏覽器上寬度則是以 300px+10px(右填充)+10px(左填充)=320px來計算的。這時我們可以做如下修改divwidth:300px! important;width /*/:340px;m

5、argin:0 10px 0 10px 關于這個/*/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的話,請告訴我一聲,謝了!:) 11、ul標簽在Mozilla中默認是有padding值的,而在IE中只有margin有值所以先定義ulmargin:0;padding:0; 就能解決大部分問題 注意事項: 1、float的div一定要閉合。 例如:(其中floatA、floatB的屬性已經(jīng)設置為float:left;)<#div id=”floatA” > <#div id=”floatB” > <#div id=”NOTflo

6、atC” > 這里的NOTfloatC并不希望繼續(xù)平移,而是希望往下排。 這段代碼在IE中毫無問題,問題出在FF。原因是NOTfloatC并非float標簽,必須將float標簽閉合。 在<#div class=”floatB”> <#div class= - 先溫習一下對于IE的box-model的破解 IE box-model這個臭名昭著的bug存在于IE6/Win以前的每一只版本,這個蟲子直到tantak發(fā)布了流傳最為廣泛的那個hack才開始被馴服 IE5.X/win對box-model的解析是一樣的,他們認為width包括了邊框(border)和補白(paddi

7、ng),幸運的是這個情況在IE6中有了好轉 但是IE6在向后兼容的同時也包容了以前的錯誤,IE6其實有兩個核心,在舊的頁面前他仍舊表現(xiàn)出對錯誤的寬容,只有在文檔中嚴格地加上文檔類型(DOCTYPE)聲明,IE6才能夠接受正確的box-model 所以,tantak的hack必須和正確的DOCTYPE同時包含在文檔中才能夠正常工作 Quote div.content width:400px; /這個是錯誤的width,所有瀏覽器都讀到了 voice-family: """" /IE5.X/win忽略了""""后的內容

8、 voice-family:inherit; width:300px; /包括IE6/win在內的部分瀏覽器讀到這句,新的數(shù)值(300px)覆蓋掉了舊的 html>body .content /html>body是CSS2的寫法 width:300px; /支持CSS2該寫法的瀏覽器有幸讀到了這一句 現(xiàn)在回到主題,我們經(jīng)??吹?important和(空格)/*/:組合在一起使用,這個寫法有什么奧妙呢? 看剛才那個寫法,我這里可以提供另一種寫法也能達到這樣的效果 Quote div.content width:300px !important; /這個是正確的width,大部分支持!

9、important標記的瀏覽器使用這里的數(shù)值 width(空格)/*/:400px; /IE6/win不解析這句,所以IE6/win仍然認為width的值是300px;而IE5.X/win讀到這句,新的數(shù)值(400px)覆蓋掉了舊的,因為!important標記對他們不起作用 html>body .content /html>body是CSS2的寫法 width:300px; /支持CSS2該寫法的瀏覽器有幸讀到了這一句 同樣,這個方法仍必須依靠正確的文檔類型聲明才能夠正常工作,原因在前面已經(jīng)說過。 文檔類型聲明就像一個開關,打開向后兼容的未來,而錯誤使用的話,就是一個Pandor

10、a box - ie7.0的面世,尚且不論他是否較之ie6.0進步, ie7和ie6 之間不兼容,毫無疑問又引入了新的痛處,至少在調試的過程中,又多了一道程序以及隨之而來的大量不兼容。 目前,使用ie7.0的用戶尚且是少數(shù),使用ie6.0的用戶仍然占據(jù)很大的比重。然而,大量通過ie6 測試的網(wǎng)頁,在ie7.0中都顯示不正常。 據(jù)ie7.0官方解說: ie7.0在IE6的基礎上引入了strict模式,包含了許多有關于層疊樣式表(CSS)解析 定這個div,不允許它浮動在nei右側。 這些在ie6里面是正確的。但是在火狐或者其他瀏覽器里面,我們發(fā)現(xiàn)問題并非如此簡單。我們發(fā)現(xiàn),當nei這個div的寬

11、度和高度都大于wai這個div的時候,wai并沒有被內撐開而是依舊顯示為我們指定的寬高。在我的例子中,都是500。 這個時候我不理解了,我搜索了很多的資料,但是都沒能理解這是為什么,直到看到別人在類似的情況下給wai這個div加了一個overflow:hidden這個屬性解決了這個問題。 我們直到overflow:hidden這個屬性的作用是隱藏溢出,給wai加上這個屬性后,我們的nei的寬高自動的被隱藏掉了。另外,我們再做一個試驗,將wai這個div的高度值刪除后,我們發(fā)現(xiàn),wai的高度自動的被nei這個div的高度值給撐開了。 說到這里,我們再來理解一下“浮動”這個詞的含義。我們原先的理解

12、是,在一個平面上的浮動,但是通過這個試驗,我們發(fā)現(xiàn),這不僅僅是一個平面上的浮動,而是一個立體的浮動! 也就是說,當nei這個div加上浮動這個屬性的時候,在顯示器的側面,它已經(jīng)脫離了wai這個div,也就是說,此時的nei的寬高是多少,對于已經(jīng)脫離了的wai來說,都是不起作用的。打個形象的比喻就是當JJ脫離BB的時候,JJ的大小對于BB是沒有撐開的作用的(有點少兒不宜的感覺-_-|) OK,當我們全面的理解了浮動這個詞的含義的時候,我們就理解overflow:hidden這個屬性中的解釋,清除浮動是什么意思了。也就是說,當我們給wai這個div加上overflow:hidden這個屬性的時候,

13、其中的nei等等帶浮動屬性的div的在這個立體的浮動已經(jīng)被清除了,就好比JJ又進入了BB內,JJ的大小自然又會影響到BB的大小。 這就是overflow:hidden這個屬性清除浮動的準確含義。 當我們沒有給wai這個div設置高度的時候,nei這個div的高度,就會撐開wai這個div,而在另一個方面,我們要注意到的是,當我們給wai這個div加上一個高度值,那么無論nei這個div的高度是多少,wai這個高度都是我們設定的值。而當nei的高度超過wai的高度的時候,超出的部分就會被隱藏。這就是隱藏溢出的含義! 我相信,通過我的這些文字,大家對overflow:hidden這個屬性有了全新的

14、認識。希望大家和我一樣,在div+css學習中能夠不斷的進步! 1、DOCTYPE 影響 CSS 處理 2、FF:div 設置 margin-left, margin-right 為 auto 時已經(jīng)居中,IE 不行 3、FF: body 設置 text-align 時, div 需要設置 margin: auto(主要是 margin-left,margin-right) 方可居中 4、FF: 設置 padding 后, div 會增加 height 和 width, 但 IE 不會, 故需要用 !important 多設一個 height 和 width 5、FF: 支持 !importa

15、nt, IE 則忽略, 可用 !important 為 FF 特別設置 樣式 6、div 的垂直居中問題: vertical-align:middle; 將行距增加到和整個DIV一樣高 line-height:200px; 然后插入文字,就垂直居中了。缺點是要控制內容不要換行 7、cursor: pointer 可以同時在 IE FF 中顯示游標手指狀, hand 僅 IE 可以 8、FF: 鏈接加邊框和背景色,需設置 display: block, 同時設置 float: left 保證不換行。參照 menubar, 給 a 和 menubar 設置高度是為了避免底邊顯示錯位, 若不設 he

16、ight, 可以在 menubar 中插入一個空格。 9、在mozilla firefox和IE中的BOX模型解釋不一致導致相差2px解決方法: divmargin:30px!important;margin:28px; 注意這兩個margin的順序一定不能寫反,據(jù)阿捷的說法!important這個屬性IE不能識別,但別的瀏覽器可以識別。所以在IE下其實解釋成這樣: divmaring:30px;margin:28px 重復定義的話按照最后一個來執(zhí)行,所以不可以只寫margin:XXpx!important; 10、IE5 和IE6的BOX解釋不一致 IE5下 divwidth:300px;m

17、argin:0 10px 0 10px; div的寬度會被解釋為300px-10px(右填充)-10px(左填充)最終div的寬度為280px,而在IE6和其他瀏覽器上寬度則是以300px+10px(右填充)+10px(左填充)=320px來計算的。這時我們可以做如下修改 divwidth:300px!important;width /*/:340px;margin:0 10px 0 10px 關于這個/*/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持。 11、ul標簽在Mozilla中默認是有padding值的,而在IE中只有margin有值所以先定義 ulmargi

18、n:0;padding:0; 就能解決大部分問題 注意事項: 1、float的div一定要閉合。 例如:(其中floatA、floatB的屬性已經(jīng)設置為float:left;) <#div id="floatA" > <#div id="floatB" > <#div id="NOTfloatC" > 這里的NOTfloatC并不希望繼續(xù)平移,而是希望往下排。 這段代碼在IE中毫無問題,問題出在FF。原因是NOTfloatC并非float標簽,必須將float標簽閉合。 在 <#div cla

19、ss="floatB"> <#div class="NOTfloatC"> 之間加上 <#div class="clear"> 這個div一定要注意聲明位置,一定要放在最恰當?shù)牡胤?,而且必須與兩個具有float屬性的div同級,之間不能存在嵌套關系,否則會產(chǎn)生異常。 并且將clear這種樣式定義為為如下即可: .clear clear:both; 此外,為了讓高度能自動適應,要在wrapper里面加上overflow:hidden; 當包含float的box的時候,高度自動適應在IE下無效,這時候應該觸發(fā)

20、IE的layout私有屬性(萬惡的IE?。?用zoom:1;可以做到,這樣就達到了兼容。 例如某一個wrapper如下定義: 以下為引用的內容: .colwrapper overflow:hidden; zoom:1; margin:5px auto; 以下前遇到過 2、margin加倍的問題。 設置為float的div在ie下設置的margin會加倍。這是一個ie6都存在的bug。 解決方案 是在這個div里面加上display:inline; 例如: <#div id="imfloat"> 相應的c 可用 !important 為 FF 非凡設置樣式 Mb5

21、U.com-模板無憂 6、div 的垂直居中問題: vertical-align:middle; 將行距增加到和整個DIV一樣高 line-height:200px; 然后插入文字,就垂直居中了。缺點是要控制內容不要換行 MB5UCOM 7、cursor: pointer 可以同時在 IE FF 中顯示游標手指狀, hand 僅 IE 可以 WWW.MB5U_COM 8、FF: 鏈接加邊框和背景色,需設置 display: block, 同時設置 float: left 保證不換行。參照 menubar, 給 a 和 menubar 設置高度是為了避免底邊顯示錯位, 若不設 height, 可

22、以在 menubar 中插入一個空格。 www.MB5U_COM MB5U_COM 9、在mozilla firefox和IE中的BOX模型解釋不一致導致相差2px解決方法: MB5UCOM divmargin:30px!important;margin:28px; 模板無憂-M 注重這兩個margin的順序一定不能寫反,據(jù)阿捷的說法!important這個屬性IE不能識別,但別的瀏覽器可以識別。所以在IE下其實解釋成這樣: 模板無憂-MB5U.-COM MB_模板無憂 divmaring:30px;margin:28px WWW.MB5U_COM 重復定義的話按照最后一個來執(zhí)行,所以不可以只

23、寫margin:XXpx!important; wwW.MB5U_COM 10、IE5 和IE6的BOX解釋不一致 模板無憂-M IE5下 MB5U_coM MB_模板無憂 divwidth:300px;margin:0 10px 0 10px; WWW.MB5U_COM MB_模板無憂 div的寬度會被解釋為300px-10px(右填充)-10px(左填充)最終div的寬度為280px,而在IE6和其他瀏覽器上寬度則是以300px 10px(右填充) 10px(左填充)=320px來計算的。這時我們可以做如下修改 wwW.MB5U_COM divwidth:300px!important;w

24、idth /*/:340px;margin:0 10px 0 10px MB5UCOM 關于這個/*/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持。 MB_模板無憂 11、ul標簽在Mozilla中默認是有padding值的,而在IE中只有margin有值所以先定義 WWW.MB5U_COM 模板無憂-M ulmargin:0;padding:0; www.MB5U_COM 就能解決大部分問題 WWW.MB5U_COM 注重事項: MB5U_COM Mb5U.com-模板無憂 1、float的div一定要閉合。 MB5U_COM 例如:(其中floatA、floatB的

25、屬性已經(jīng)設置為float:left;) wwW.MB5U_COM <#div id="floatA" > 模板無憂-M <#div id="floatB" > 模板無憂-mb5u_COm <#div id="NOTfloatC" > Mb5U.com-模板無憂 模板無憂-MB5u_com 這里的NOTfloatC并不希望繼續(xù)平移,而是希望往下排。 模板無憂-mb5u_COm 模板無憂-mb5u_COm 這段代碼在IE中毫無問題,問題出在FF。原因是NOTfloatC并非float標簽,必須將floa

26、t標簽閉合。 MB5U_COM 在 WWW.MB5U_COM Mb5U.com-模板無憂 <#div class="floatB"> MB5U_COM <#div class="NOTfloatC"> MB5U_COM 之間加上 wWw.MB5U_COM <#div class="clear"> mb5u-Com-模板無憂 MB5U_coM 這個div一定要注重聲明位置,一定要放在最恰當?shù)牡胤?,而且必須與兩個具有float屬性的div同級,之間不能存在嵌套關系 ,否則會產(chǎn)生異常。 wwW.MB5U_

27、COM 并且將clear這種樣式定義為為如下即可: wwW.MB5U_COM .clear 模板無憂-mb5u_COm clear:both; 模板無憂-MB5U.-COM 此外,為了讓高度能自動適應,要在wrapper里面加上overflow:hidden; 模板無憂-M 當包含float的box的時候,高度自動適應在IE下無效,這時候應該觸發(fā)IE的layout私有屬性(萬惡的IE啊!)用zoom:1;可以做到,這樣就達到了兼容。 WWW.MB5U_COM 例如某一個wrapper如下定義: 模板無憂-MB5U.-COM 以下為引用的內容: .colwrapper overflow:hidd

28、en; zoom:1; margin:5px auto; 模板無憂-MB5U.-COM www.MB5U_COM 2、margin加倍的問題。 MB_模板無憂 設置為float的div在ie下設置的margin會加倍。這是一個ie6都存在的bug。 MB5U_coM 解決方案 Mb5U.com-模板無憂 是在這個div里面加上display:inline; www.MB5U_COM 例如: 模板無憂-MB5U.-COM <#div id="imfloat"> 模板無憂-MB5u_com mb5u-Com-模板無憂 相應的css為 MB5U_coM 模板無憂-MB

29、5u_com 以下為引用的內容: #IamFloat float:left; margin:5px;/*IE下理解為10px*/ display:inline;/*IE下再理解為5px*/ mb5u-Com-模板無憂 3、關于容器的包涵關系 www.MB5U_COM MB5U_COM 很多時候,尤其是容器內有平行布局,例如兩、三個float的div時,寬度很輕易出現(xiàn)問題。在IE中,外層的寬度會被內層更寬的div擠破。一定要用Photoshop或者Firework量取像素級的精度。 Mb5U.com-模板無憂 4、關于高度的問題 模板無憂-mb5u_COm 模板無憂-M 假如是動態(tài)地添加內容,高

30、度最好不要定義。瀏覽器可以自動伸縮,然而假如是靜態(tài)的內容,高度最好定好。(似乎有時候不會自動往下?lián)伍_,不知道具體怎么回事) MB5UCOM 模板無憂-mb5u_COm 5、最狠的手段 - !important; MB_模板無憂 假如實在沒有辦法解決一些細節(jié)問題,可以用這個方法.FF對于"!important"會自動優(yōu)先解析,然而IE則會忽略。如下 www.MB5U_COM 以下為引用的內容: .tabd1 background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*

31、/ background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */ Mb5U.com-模板無憂 WWW.MB5U_COM 值得注重的是,一定要將xxxx !important 這句放置在另一句之上,上面已經(jīng)提過 undefined undefined CSS兼容IE與Firefox要點分析2006-10-15 14:43IE vs FF CSS 兼容要點: DOCTYPE 影響 CSS 處理 FF: div 設置 margin-left, margin-right 為 auto 時已經(jīng)居中, IE 不行

32、 FF: body 設置 text-align 時, div 需要設置 margin: auto(主要是 margin-left,margin-right) 方可居中 FF: 設置 padding 后, div 會增加 height 和 width, 但 IE 不會, 故需要用 !important 多設一個 height 和 width FF: 支持 !impor tant, IE 則忽略, 可用 !important 為 FF 特別設置樣式 div 的垂直居中問題: vertical-align:middle; 將行距增加到和整個DIV一樣高 line-height:200px; 然后插入

33、文字,就垂直居中了。缺點是要控制內容不要換行 cursor: pointer 可以同時在 IE FF 中顯示游標手指狀, hand 僅 IE 可以 FF: 鏈接加邊框和背景色,需設置 display: block, 同時設置 float: left 保證不換行。參照 menubar, 給 a 和 menubar 設置高度是為了避免底邊顯示錯位, 若不設 height, 可以在 menubar 中插入一個空格 XHTML+CSS兼容性解決方案小集 使用XHTMLCSS構架好處不少,但也確實存在一些問題,不論是因為使用不熟練還是思路不清晰,我就先把一些我遇到的問題寫在下面,省的大家四處找 1.在m

34、ozilla firefox和IE中的BOX模型解釋不一致導致相差2px解決方法: divmargin:30px!important;margin:28px;注意這兩個margin的順序一定不能寫反,據(jù)阿捷的說法!important這個屬性IE不能識別,但別的瀏覽器可以識別。所以在IE下其實解釋成這樣: divmaring:30px;margin:28px重復定義的話按照最后一個來執(zhí)行,所以不可以只寫margin:XXpx!important; 2.IE5 和IE6的BOX解釋不一致IE5下divwidth:300px;margin:0 10px 0 10px;div的寬度會被解釋為300px

35、-10px(右填充)-10px(左填充)最終div的寬度為280px,而在IE6和其他瀏覽器上寬度則 是以300px+10px(右填充)+10px(左填充)=320px來計算的。這時我們可以做如下修改 divwidth:300px!important;width /*/:340px;margin:0 10px 0 10px,關于這個/*/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的話,請告訴我一聲,謝了?。海?3.ul標簽在Mozilla中默認是有padding值的,而在IE中只有margin有值所以先定義 ulmargin:0;padding:0;就能

36、解決大部分問題 二、 CSS對瀏覽器器的兼容性具有很高的價值,通常情況下IE和火狐瀏覽器存在很大的解析差異,今天和大家談談火狐瀏覽器和IE瀏覽器下CSS兼容的問題,并推薦兩篇不錯的文章給大家:網(wǎng)頁設計師必備的火狐擴展 和 IE和火狐的css兼容性問題匯總,下面進入正題: 1.DOCTYPE 影響 CSS 處理 2.FF: div 設置 margin-left, margin-right 為 auto 時已經(jīng)居中, IE 不行 3.FF: body 設置 text-align 時, div 需要設置 margin: auto(主要是 margin-left,margin-right) 方可居中

37、4.FF: 設置 padding 后, div 會增加 height 和 width, 但 IE 不會, 故需要用 !important 多設一個 height 和 width 5.FF: 支持 !important, IE 則忽略, 可用 !important 為火狐特別設置樣式 6.div 的垂直居中問題: vertical-align:middle; 將行距增加到和整個DIV一樣高 line-height:200px; 然后插入文字,就垂直居中了。缺點是要控制內容不要換行 7.cursor: pointer 可以同時在 IE 、火狐中顯示游標手指狀, hand 僅 IE 可以 8.FF:

38、 鏈接加邊框和背景色,需設置 display: block, 同時設置 float: left 保證不換行。參照 menubar, 給 a 和 menubar 設置高度是為了避免底邊顯示錯位, 若不設 height, 可以在 menubar 中插入一個空格。 9.在mozilla firefox和IE中的BOX模型解釋不一致導致相差2px解決方法: divmargin:30px!important;margin:28px;注意這兩個margin的順序一定不能寫反,據(jù)阿捷的說法! important這個屬性IE不能識別,但別的瀏覽器可以識別。所以在IE下其實解釋成這樣: divmaring:30px;margin:28px重復定義的話按照最后一個來執(zhí)行,所以不可以只寫margin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論