一、《important 在IE6及FF中的使用》
.box1 {width:150px !important;}
.box1 {width:250px;}
!important是說這個設定有優先級,IE遇到!important不會出錯只是忽略他的功能,如果後面又設置了width,IE會以最後設置的width為準,如果後面再沒有其它設置,則會用目前這個值,也就是前面的!important那個值。例如:#test {width: 300px !important }IE與FF都顯示300PX。如果後面還有值IE就顯示後面的值,FF顯示前面有!import的那個值!
而其它瀏覽器,則認這個important,因為有優先權的關係,所以總是以前面設定的width為準。
#test {width:300px;width:400px !important ;}
這句顯示的結果是IE和FF寬度都是400PX
#test {width:300px !important ;width:400px;}
這句顯示結果FF:300px IE: 400px
所以,使用!important 時,把含有!important 放到前面。
但問題又來了,IE7已可以辨識!important,請看下面!
二、針對firefox ie6 ie7的css樣式
現在大部分都是用!important來hack,對於ie6和firefox測試可以正常顯示,但是ie7對!important可以正確解釋,會導致頁面沒按要求顯示!找到一個針對IE7不錯的hack方式就是使用“*+html”,現在用IE7瀏覽一下,應該沒問題了。
現在寫一個CSS可以這樣:
#1 { color: #333; } /* Moz */
* html #1 { color: #666; } /* IE6 */
*+html #1 { color: #999; } /* IE7 */
那麼在firefox下字體顏色顯示為#333,IE6下字體顏色顯示為#666,IE7下字體顏色顯示為#999可以用”+”來實現只有IE識別的CSS Hack可能有朋友想到用”_” Hack ,但它們是由區別的,因為IE7中是不識別“_”的。所以用+
測試結果:
IE5.5,IE6 ,IE7瀏覽器都能辨識;
FF2.0,Opera 9,Safari 2瀏覽器不識別。
三、IE7的hack
IE7 修復了很多bug,也增加了對一些選擇符的支持,所以現在諸如*html {} 和html>body {} 、!important等針對IE 隱藏或顯示的hack 都會在IE7 中失效。雖然CSS Hack 不建議使用,條件註解才是萬無一失的過濾器,但是條件註解只能出現在HTML 中,CSS Hack 還是有用武之地的。 Nanobot 發現了一些針對IE7 的CSS Hack,具體就是:
>body
html*
*+html
這三種寫法,其中前兩種都是不合法的CSS 寫法,在標準相容瀏覽器中被忽略,但是IE7 卻不這麼認為。對於>body ,它會將缺少的選擇符用全域選擇符* 代替,也就是將其處理成了*>body,而且不光對於> 選擇符,+,~ 選擇符中這個現像也存在。對於html* ,由於html 和* 之間沒有空格,所以也是CSS 語法錯誤,但IE7 不會忽略,而是錯誤地認為這裡有一個空格。對於第三種*+html,IE7 認為html 前面的DTD 聲明也是元素,所以html 會被選中,這三種方法中只有這一種方法是合法的CSS 寫法,也就是說可以通過校驗器的驗證,因此也是作者推薦的hack 用法。
IE 6 and below
Use * html {} to select the html element.
IE 7 and below
Use *+html, * html {} to select the html element.
IE 7 only
Use *+html {} to select the html element.
IE 7 and modern browsers only
Use html>body {} to select the body element.
Modern browsers only (not IE 7)
Use html>/**/body {} to select the body element.
四、IE和FF對盒子模型的解釋也不一樣,程式碼說明:#test { width: 650px !important;width: 648px;padding-left:2px;background:#fff; }
test 顯示的寬頻是650px
IE Box的總寬度是: width+padding+border+margin寬度總和FF Box的總寬度就是width的寬度,padding+border+margin的寬度在含在width內。
如果有BOX{WIDTH:"300"; PADDING:"5PX";},則BOX在IE的寬度應該是:310。而在FF的寬度則是300,所以在BOX有填滿的情況下應該這樣使用BOX{WIDTH:"290"!IMPORTANT; WIDTH: "300";},這樣子才能確保BOX的寬度始終在300px,而不會出現被撐開的現象,在FF裡面則不會造成浮動層填不滿的狀況。
五、ul 標籤在Mozilla 中有padding 值的,而在IE 中只有margin 有值。
設定ul{margin:0;padding:0}
六、IE 分不清繼承關係和父子關係的差別,全部都是繼承關係
七、FF下給div 設定padding 後會導致width 和height 增加, 但IE不會.(可用!important解決)
八、居中問題
1.垂直居中.將line-height 設定為目前div相同的高度, 再透過vertical-align: middle.( 注意內容不要換行.)
2、水平居中. margin: 0 auto;(當然不是萬能)
3.若需為a 標籤內內容加上樣式, 需要設定display: block;(常見於導航標籤)
4、FF 和IE 對BOX 理解的差異導致相差2px 的還有設為float的div在ie下margin加倍等問題.\
5.UL的不同表現:
ul 標籤在FF 下面預設有list-style 和padding . 最好事先聲明, 以避免不必要的麻煩. (常見於導航標籤和內容清單)
6、作為外部wrapper 的div 不要定死高度, 最好還加上overflow: hidden.以達到高度自適應。
九、關於手形遊標hand 只適用於IE..IE與FF都認的話請用cursor: pointer