CSS瀏覽器兼容問題的詳細解答

下面由小編打來CSS瀏覽器兼容問題的詳細解答,希望對諸位有所幫助。
 
 1. Div居中問題 div設置 margin-left, margin-right 爲 auto 時已經居中,IE 不行,IE需要設定body居中,首先在父級元素定義text-algin: center;這個的意思就是在父級元素內的內容居中。

CSS瀏覽器兼容問題的詳細解答

2.鏈接(a標籤)的邊框與背景 a 鏈接加邊框和背景色,需設置 display: block, 同時設置 float: left 保證不換行。參照 menubar, 給 a 和 menubar 設置高度是爲了避免底邊顯示錯位, 若不設 height, 可以在 menubar 中插入一個空格。

3.超鏈接訪問過後hover樣式就不出現的問題 被點擊訪問過的超鏈接樣式不在具有hover和active了,很多人應該都遇到過這個問題,解決方法是改變CSS屬性的排列順序: L-V-H-A Code。

4. 遊標手指cursor cursor: pointer 可以同時在 IE FF 中顯示遊標手指狀, hand 僅 IE 可以。

的padding與margin ul標籤在FF中默認是有padding值的,而在IE中只有margin默認有值,所以先定義 ul{margin:0;padding:0;}就能解決大部分問題。

6. FORM標籤 這個標籤在IE中,將會自動margin一些邊距,而在FF中margin則是0,因此,如果想顯示一致,所以最好在css中指定margin和 padding,針對上面兩個問題,我的css中一般首先都使用這樣的樣式ul,form{margin:0;padding:0;}給定義死了,所以後面就不會爲這個頭疼了。

7. BOX模型解釋不一致問題 在FF和IE 中的BOX模型解釋不一致導致相差2px解決方法:div{margin:30px!important;margin:28px;} 注意這兩個 margin的順序一定不能寫反, important這個屬性IE不能識別,但別的瀏覽器可以識別。所以在IE下其實解釋成這樣: div {maring:30px;margin:28px}重複定義的話按照最後一個來執行,所以不可以只寫margin:xx px!important; #box{ width:600px; //for ie6.0- width:500px; //for ff+ie6.0} #box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-}

8.屬性選擇器(這個不能算是兼容,是隱藏css的一個bug) p[id]{}div[id]{} 這個對於IE6.0和IE6.0以下的版本都隱藏,FF和OPera作用.屬性選擇器和子選擇器還是有區別的,子選擇器的範圍從形式來說縮小了,屬性選擇器的範圍比較大,如p[id]中,所有p標籤中有id的都是同樣式的.

9.最狠的手段 - !important; 如果實在沒有辦法解決一些細節問題,可以用這個方法對於”!important”會自動優先解析,然而IE則會忽略.如下 1{ background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/ background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} 值得注意的是,一定要將xxxx !important 這句放置在另一句之上,上面已經提過。

,FF的默認值問題 或許你一直在抱怨爲什麼要專門爲IE和FF寫不同的CSS,爲什麼IE這樣讓人頭疼,然後一邊寫css,一邊咒罵那個可惡的M$ IE.其實對於css的標準支持方面,IE並沒有我們想象的那麼可惡,關鍵在於IE和FF的默認值不一樣而已,掌握了這個技巧,你會發現寫出兼容FF和IE的css並不是那麼困難,或許對於簡單的css,你完全可以不用”!important”這個東西了。 我們都知道,瀏覽器在顯示網頁的時候,都會根據網頁的 css樣式表來決定如何顯示,但是我們在樣式表中未必會將所有的元素都進行了具體的描述,當然也沒有必要那麼做,所以對於那些沒有描述的屬性,瀏覽器將採用內置默認的方式來進行顯示,譬如文字,如果你沒有在css中指定顏色,那麼瀏覽器將採用黑色或者系統顏色來顯示,div或者其他元素的背景,如果在 css中沒有被指定,瀏覽器則將其設置爲白色或者透明,等等其他未定義的樣式均如此。所以有很多東西出現FF和IE顯示不一樣的根本原因在於它們的默認顯示不一樣,而這個默認樣式該如何顯示我知道在w3中有沒有對應的標準來進行規定,因此對於這點也就別去怪罪IE了。

11.爲什麼FF下文本無法撐開容器的高度 標準瀏覽器中固定高度值的容器是不會象IE6裏那樣被撐開的,那我又想固定高度,又想能被撐開需要怎樣設置呢?辦法就是去掉height設置min-height:200px; 這裏爲了照顧不認識min-height的IE6 可以這樣定義: { height:auto!important; height:200px; min-height:200px; }

12.爲什麼IE6下容器的寬度和FF解釋不同呢?

讓FireFox與IE兼容問題的差別在於容器的.整體寬度有沒有將邊框(border)的寬度算在其內,這裏IE6解釋爲200PX ,而FF則解釋爲220PX,那究竟是怎麼導致的問題呢?大家把容器頂部的xml去掉就會發現原來問題出在這,頂部的申明觸發了IE的qurks mode。

IE6,IE7,FF IE7.0 出來了,對CSS的支持又有新問題。瀏覽器多了,網頁兼容性更差了,疲於奔命的還是我們 ,爲解決IE7.0的兼容問題,找來了下面這篇文章: 現在我大部分都是用!important來hack,對於ie6和firefox測試可以正常顯示,但是ie7對!important可以正確解釋,會導致頁面沒按要求顯示!下面是兩個瀏覽器的兼容性收集.。

第一種,是CSS HACK的方法 height:20px; /*For Firefox*/ *height:25px; /*For IE7 & IE6*/ _height:20px; /*For IE6*/ 注意順序。 這樣也屬於CSS HACK,不過沒有上面這樣簡潔。 #example { color: #333; } /* Moz */ * html #example { color: #666; } /* IE6 */ *+html #example { color: #999; } /* IE7 */

第二種,css filter的辦法,以下爲經典從國外網站翻譯過來的。. 新建一個css樣式如下: #item { width: 200px; height: 200px; background: red; } 新建一個div,並使用前面定義的css的樣式。在body表現這裏加入lang屬性,中文爲zh: 現在對div元素再定義一個樣式: *:lang(en) #item{ background:green !important; } 這樣做是爲了用!important覆蓋原來的css樣式,由於:lang選擇器ie7.0並不支持,所以對這句話不會有任何作用,於是也達到了ie6.0下同樣的效果,但是很不幸地的是,safari同樣不支持此屬性,所以需要加入以下css樣式: #item:empty { background: green !important } :empty選擇器爲css3的規範,儘管safari並不支持此規範,但是還是會選擇此元素,不管是否此元素存在,現在綠色會現在在除ie各版本以外的瀏覽器上。