DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS詳解 >> CSS hack for Firefox IE7 IE6
CSS hack for Firefox IE7 IE6
編輯:CSS詳解     
昨天在設計一個新頁面的時候,發現在Firefox、IE7和IE6的這三款浏覽器有不同的錯位,沒辦法,只能用CSS hack來解決,翻閱以前的收集的舊資料,發現下面的代碼可以解決:
#abc{
margin:20px; /* 任何浏覽器都可以識別 */
*margin:10px; /* IE7和IE6都可以識別 */
_margin:10px; /* 只有IE6可以識別 */
}
效果是出來的,但這樣寫後CSS文件無法通過驗證,雖然說驗證只是一個工具,不用去刻意追求,最終目的是呈現出來的效果,但我還是希望通過別的hack寫法來達到我要的結果並且通過驗證。
OK,用流傳以久的!important,這種方法因為隨著IE7對!important的可以識別而漸漸少用,現在試一下看看如何,同時必須結合用一種專門寫給IE7的寫法:
#abc{
margin:20px!important; /* Firefox和IE7都可以識別,但IE6無法識別,所以IE6接著讀後面沒有!important的語句 */
margin:10px; /* 由於上一行代碼中使用了!importan,所以Firefox和IE7都只讀那一個margin,而這個margin只有IE6可以理解 */
}
*+Html #abc{
margin:10px; /* 只有IE7可以識別,所以重新替代了第一個margin的值 */
}

理論上是這樣解釋,但實際出來後IE7依然使用第一個maring值20,為什麼呢,難道這種*+Html前綴的寫法行不同,不可能的,試試改一改代碼:
*+Html #abc{
display:none;
}
呵呵,IE7裡面什麼都看不見了,而Firefox依然可以,這樣的話問題就出在!important這裡了,只要有這個詞出現,IE7依然以他為優先和最終值,假如沒有!important,這樣寫完全沒有問題,考慮了一下後,嘗試在專門寫給IE7的hack裡面也添加上!important,果然,效果出來了,IE7選擇了最後一個margin值了,完整代碼如下:
#abc{
margin:20px!important; /* for Firefox */
margin:10px; /* for IE6 */
}
*+Html #abc{
margin:10px!important; /* for IE7 */
}

PS:以上代碼,Opera和Firefox同價。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved