IE和火狐的css兼容性問題總結(jié)_第1頁
IE和火狐的css兼容性問題總結(jié)_第2頁
IE和火狐的css兼容性問題總結(jié)_第3頁
IE和火狐的css兼容性問題總結(jié)_第4頁
IE和火狐的css兼容性問題總結(jié)_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

----------------------------精品word文檔值得下載值得擁有--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------IE和火狐的css兼容性問題總結(jié)

互聯(lián)網(wǎng)

Alixixi

2009-08-12

點擊:2832

我要評論CSS對瀏覽器器的兼容性具有很高的價值,通常情況下IE和火狐瀏覽器存在很大的解析差異,這里介紹一下兼容要點。CSS對瀏覽器器的兼容性具有很高的價值,通常情況下IE和火狐瀏覽器存在很大的解析差異,這里介紹一下兼容要點。1、DOCTYPE影響CSS處理2、FF:div設(shè)置margin-left,margin-right為auto時已經(jīng)居中,IE不行3、FF:body設(shè)置text-align時,div需要設(shè)置margin:auto(主要是margin-left,margin-right)方可居中4、FF:設(shè)置padding后,div會增加height和width,但IE不會,故需要用!important多設(shè)一個height和width5、FF:支持!important,IE則忽略,可用!important為FF特別設(shè)置樣式,值得注意的是,一定要將xxxx!important這句放置在另一句之上6、div的垂直居中問題:vertical-align:middle;將行距增加到和整個DIV一樣高line-height:200px;然后插入文字,就垂直居中了。缺點是要控制內(nèi)容不要換行7、cursor:pointer可以同時在IEFF中顯示游標(biāo)手指狀,hand僅IE可以8、FF:鏈接加邊框和背景色,需設(shè)置display:block,同時設(shè)置float:left保證不換行。參照menubar,給a和menubar設(shè)置高度是為了避免底邊顯示錯位,若不設(shè)height,可以在menubar中插入一個空格。9、在mozillafirefox和IE中的BOX模型解釋不一致導(dǎo)致相差2px解決方法:div{margin:30px!important;margin:28px;}

注意這兩個margin的順序一定不能寫反,據(jù)阿捷的說法!important這個屬性IE不能識別,但別的瀏覽器可以識別。所以在IE下其實解釋成這樣:div{maring:30px;margin:28px}

重復(fù)定義的話按照最后一個來執(zhí)行,所以不可以只寫margin:XXpx!important;10、IE5和IE6的BOX解釋不一致

IE5下div{width:300px;margin:010px010px;}

div的寬度會被解釋為300px-10px(右填充)-10px(左填充)最終div的寬度為280px,而在IE6和其他瀏覽器上寬度則是以300px+10px(右填充)+10px(左填充)=320px來計算的。這時我們可以做如下修改div{width:300px!important;width/**/:340px;margin:010px010px}

關(guān)于這個/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的話,請告訴我一聲,謝了!:)11、ul標(biāo)簽在Mozilla中默認是有padding值的,而在IE中只有margin有值所以先定義ul{margin:0;padding:0;}就能解決大部分問題注意事項:1、float的div一定要閉合。例如:(其中floatA、floatB的屬性已經(jīng)設(shè)置為float:left;)<#divid=\”floatA\”><#divid=\”floatB\”><#divid=\”NOTfloatC\”>這里的NOTfloatC并不希望繼續(xù)平移,而是希望往下排。這段代碼在IE中毫無問題,問題出在FF。原因是NOTfloatC并非float標(biāo)簽,必須將float標(biāo)簽閉合。在<#divclass=\”floatB\”><#divclass=\”NOTfloatC\”>之間加上<#divclass=\”clear\”>這個div一定要注意聲明位置,一定要放在最恰當(dāng)?shù)牡胤?,而且必須與兩個具有float屬性的div同級,之間不能存在嵌套關(guān)系,否則會產(chǎn)生異常。并且將clear這種樣式定義為如下即可:.clear{clear:both;}此外,為了讓高度能自動適應(yīng),要在wrapper里面加上overflow:hidden;當(dāng)包含float的box的時候,高度自動適應(yīng)在IE下無效,這時候應(yīng)該觸發(fā)IE的layout私有屬性(萬惡的IE啊!)用zoom:1;可以做到,這樣就達到了兼容。例如某一個wrapper如下定義:.colwrapper{overflow:hidden;zoom:1;margin:5pxauto;}2、margin加倍的問題。設(shè)置為float的div在ie下設(shè)置的margin會加倍。這是一個ie6都存在的bug。解決方案是在這個div里面加上display:inline;例如:<#divid=\”imfloat\”>相應(yīng)的css為#IamFloat{float:left;margin:5px;/*IE下理解為10px*/display:inline;/*IE下再理解為5px*/}3、關(guān)于容器的包涵關(guān)系很多時候,尤其是容器內(nèi)有平行布局,例如兩、三個float的div時,寬度很容易出現(xiàn)問題。在IE中,外層的寬度會被內(nèi)層更寬的div擠破。一定要用Photoshop或者Firework量取像素級的精度。4、關(guān)于高度的問題如果是動態(tài)地添加內(nèi)容,高度最好不要定義。瀏覽器可以自動伸縮,然而如果是靜態(tài)的內(nèi)容,高度最好定好。(似乎有時候不會自動往下?lián)伍_,不知道具體怎么回事)5、最狠的手段-!important;如果實在沒有辦法解決一些細節(jié)問題,可以用這個方法.FF對于”!important”會自動優(yōu)先解析,然而IE則會忽略.如下.tabd1{background:url(/res/images/up/tab1.gif)no-repeat0px0px!important;/*StyleforFF*/background:url(/res/images/up/tab1.gif)no-repeat1px0px;/*StyleforIE*/}值得注意的是,一定要將xxxx!important這句放置在另一句之上,上面已經(jīng)提過;IE7.0出來了,對CSS的支持又有新問題。瀏覽器多了,網(wǎng)頁兼容性更差了,疲于奔命的還是我們,為解決IE7.0的兼容問題,找來了下面這篇文章:現(xiàn)在我大部分都是用!important來hack,對于ie6和firefox測試可以正常顯示,但是ie7對!important可以正確解釋,會導(dǎo)致頁面沒按要求顯示!搜索了一下,找到一個針對IE7不錯的hack方式就是使用“*+html”,現(xiàn)在用IE7瀏覽一下,應(yīng)該沒有問題了?,F(xiàn)在寫一個CSS可以這樣:#example{color:#333;}/*Moz*/*html#example{color:#666;}/*IE6*/*+html#example{color:#999;}/*IE7*/那么在firefox下字體顏色顯示為#333,IE6下字體顏色顯示為#666,IE7下字體顏色顯示為#999,他們都互不干擾。---------------------------------------------------------------------------------------------------------------------------------先溫習(xí)一下對于IE的box-model的破解IEbox-model這個臭名昭著的bug存在于IE6/Win以前的每一只版本,這個蟲子直到tantak發(fā)布了流傳最為廣泛的那個hack才開始被馴服IE5.X/win對box-model的解析是一樣的,他們認為width包括了邊框(border)和補白(padding),幸運的是這個情況在IE6中有了好轉(zhuǎn)但是IE6在向后兼容的同時也包容了以前的錯誤,IE6其實有兩個核心,在舊的頁面前他仍舊表現(xiàn)出對錯誤的寬容,只有在文檔中嚴格地加上文檔類型(DOCTYPE)聲明,IE6才能夠接受正確的box-model所以,tantak的hack必須和正確的DOCTYPE同時包含在文檔中才能夠正常工作Quotediv.content{width:400px;//這個是錯誤的width,所有瀏覽器都讀到了voice-family:"\"}\"";//IE5.X/win忽略了"\"}\""后的內(nèi)容voice-family:inherit;width:300px;//包括IE6/win在內(nèi)的部分瀏覽器讀到這句,新的數(shù)值(300px)覆蓋掉了舊的}html>body.content{//html>body是CSS2的寫法width:300px;//支持CSS2該寫法的瀏覽器有幸讀到了這一句}現(xiàn)在回到主題,我們經(jīng)常看到!important和(空格)/**/:組合在一起使用,這個寫法有什么奧妙呢?看剛才那個寫法,我這里可以提供另一種寫法也能達到這樣的效果Quotediv.content{width:300px!important;//這個是正確的width,大部分支持!important標(biāo)記的瀏覽器使用這里的數(shù)值width(空格)/**/:400px;//IE6/win不解析這句,所以IE6/win仍然認為width的值是300px;而IE5.X/win讀到這句,新的數(shù)值(400px)覆蓋掉了舊的,因為!important標(biāo)記對他們不起作用}html>body.content{//html>body是CSS2的寫法width:300px;//支持CSS2該寫法的瀏覽器有幸讀到了這一句}同樣,這個方法仍必須依靠正確的文檔類型聲明才能夠正常工作,原因在前面已經(jīng)說過。文檔類型聲明就像一個開關(guān),打開向后兼容的未來,而錯誤使用的話,就是一個Pandorabox---------------------------------------------------------------------------------------------------------------ie7.0的面世,尚且不論他是否較之ie6.0進步,ie7和ie6之間不兼容,毫無疑問又引入了新的痛處,至少在調(diào)試的過程中,又多了一道程序以及隨之而來的大量不兼容。目前,使用ie7.0的用戶尚且是少數(shù),使用ie6.0的用戶仍然占據(jù)很大的比重。然而,大量通過ie6測試的網(wǎng)頁,在ie7.0中都顯示不正常。據(jù)ie7.0官方解說:ie7.0在IE6的基礎(chǔ)上引入了strict模式,包含了許多有關(guān)于層疊樣式表(CSS)解析與呈現(xiàn)的改進。這些改進意在提高InternetExplorer解釋層疊樣式表的一致性,以達到W3C的推薦的標(biāo)準(zhǔn),同時為開發(fā)者提供一個可以依賴的功能集合。不管官方的語言是多么動聽,也不管ie7.0是不是真的W3C了,瀏覽器之間太多個性化的東西,太多差異,讓我們無可奈何。在ie7.0下設(shè)計出的網(wǎng)頁,ie6下面顯示的幾乎是不堪入目。那么,我們在設(shè)計網(wǎng)頁的時候,在解決好ie6.0與火狐的兼容問題的同時,我們是更多的服從符合W3C一些的ie7.0,還是對96%的ie6.0妥協(xié)?這個問題其實有些多余,我們能做的,或許只有選擇中庸,只有盡量調(diào)試到各個瀏覽器都顯示正常吧。ie7.0與ie6.0的之間不兼容,目前就我知道的有如下幾個方面,如有遺漏或者說錯了的地方,歡迎在后面補充或者糾正。1.ie7,ie6div+css出現(xiàn)寬度定義不同在寬度定義上出現(xiàn)寬度的解釋不同,IE7寬度在IE6上要寬一些,,正是這個原因網(wǎng)頁可能會出現(xiàn)溢出問題,還好這個問題可以通過更改數(shù)值或者修改一下百分比解決.2.ie7.0修復(fù)了!important這個bug。先前由于ie6.0對!important識別存在bug,在firefox和IE中的BOX模型解釋不一致導(dǎo)致相差2px,大部分網(wǎng)頁標(biāo)準(zhǔn)設(shè)計師通過這個bug來兼容ie6.0和firefox,即采用:div{margin:30px!important;margin:28px;}。但是ie7.0把這個bug給修復(fù)了,所以問題又出現(xiàn)了,怎么兼容ie.7.0的同時又能兼容ie6.0和firefox?3.BoxModel的改變在IE7中,為了適應(yīng)CSS2.1boxmodel修改了溢出的行為。4.ie7.0中一些CSSfilter將不再可用IE7中修改了許多潛在解析錯誤,這些可能會阻止filter在以前的IE版本中正常工作。如:*HTMLfilter,下劃線filter和/**/注釋filter等等。5.ie7.0對很多不規(guī)范的css不再支持,對js語法要求更嚴格規(guī)范。很多在IE6下正常顯示的js頁面,在IE7下均不能正常顯示,并且還沒有提示錯誤。ie7.0對js語法要求更嚴格規(guī)范,只是這個規(guī)范似乎并沒有說明,也沒有明白的告訴大家,他們是怎么“規(guī)”怎么“范”的。57710018030900120955790368228596330825771001803090012386576137399735760696577100180309001359457807

溫馨提示

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

最新文檔

評論

0/150

提交評論