頁面亂的原因是因為IE6認(rèn)為一個DIV超寬了,所以把本應(yīng)float;right的DIV擠了下去。而如果設(shè)置為IE6下顯示正常的寬度,則在IE7和Firefox下看頁面就會少了一塊一樣,也很別扭….
怎么辦?用CSS HACK 來改寫CSS代碼
改寫前:xxx. yyy:{width:600px;} (當(dāng)設(shè)為IE7和Firefox下顯示正常的600px時
,IE6下會錯位,改為590px,則IE6下正常,IE7和Firefox下顯示不完美)
改寫后: xxx. yyy{width:600px;* width:600px;_ width:590px;}
(Firefox不認(rèn)識*和_,而IE都認(rèn)識*,IE7不支持_,IE6支持_)
順序千萬不要亂,因為當(dāng)出現(xiàn)重復(fù)定義時,瀏覽器默認(rèn)按最后一下渲染,所以一
定要先正常,再*,最后_。
這樣Firefox讀取時只看到了正常的定義,而IE都能看到第二個*的定義,于是忽
略第一個正常的定義,而IE中因為IE7不再支持_,所以按照第一個帶*號的執(zhí)行,IE6支持_,所
以認(rèn)為帶*后的也是重復(fù)定義,予以忽略,執(zhí)行最后一個定義。
有人喜歡用!important來進行CSS HACK,但我覺得!important寫起來太長了,不
如*和_簡單直觀。
只要記住IE7=*,IE6=_,然后按照先Firefox后IE7,最后IE6的順序進行編寫,
一般就可以保證大部分用戶瀏覽正常了。 來源:收集整理于互聯(lián)網(wǎng)
IE下很多地方可以省略一些層定義的浮動屬性,但是FF不行,必須每個個層都寫清楚,幾個DIV層水
平排列的時候,IE6中必須要加display:inline;,不然前端會出現(xiàn)雙倍間距,而FF中則加不加
display都顯示正常.這些都是由瀏覽器默認(rèn)值的不同而引起的,你看到那些大站的布局在各瀏覽
器中都顯示正常,是因為他們把這些默認(rèn)有區(qū)別的地方都定義清楚了.
下面的兼容要點引自互聯(lián)網(wǎng)
CSS對瀏覽器的兼容性具有很高的要求,通常情況下IE和Firefox(簡稱FF)存在很大的解析差異,
這里介紹一下兼容要點。
常見的兼容問題:
1.DOCTYPE影響CSS處理
2.FireFox火狐:div設(shè)置margin-left,margin-right為auto時已經(jīng)居中,IE不行
3.FireFox火狐:body設(shè)置text-align時,div需要設(shè)置margin:auto(主要是margin-left,margin-
right)方可居中
4.FireFox火狐:設(shè)置padding后,div會增加height和width,但IE不會,故需要用!important多設(shè)一
個height和width
5.FireFox火狐:支持!important,IE則忽略,可用!important為FireFox火狐特別設(shè)置樣式
6.div的垂直居中問題:vertical-align:middle;將行距增加到和整個DIV一樣高line-
height:200px;然后插入文字,就垂直居中了。缺點是要控制內(nèi)容不要換行
7.cursor:pointer可以同時在IEFireFox火狐中顯示游標(biāo)手指狀,hand僅IE可以
8.FireFox火狐:鏈接加邊框和背景色,需設(shè)置display:block,同時設(shè)置float:left保證不換行。
參照menubar,給a和menubar設(shè)置高度是為了避免底邊顯示錯位,若不設(shè)height,可以在menubar中
新聞熱點
疑難解答