用CSS hack技術解決瀏覽器相容性問題
什麼是CSS Hack?
不同的瀏覽器對CSS的解析結果是不同的,因此會導致相同的CSS輸出的頁面效果不同,這就需要CSS Hack來解決瀏覽器區域性的相容性問題。而這個針對不同的瀏覽器寫不同的CSS 程式碼的過程,就叫CSS Hack。
CSS Hack 形式
CSS Hack大致有3種表現形式:CSS屬性Hack、CSS選擇符Hack以及IE條件註釋Hack, Hack主要針對IE瀏覽器。
1、屬性級Hack:比如IE6能識別下劃線"_"和星號" * ",IE7能識別星號" * ",但不能識別下劃線"_",而firefox兩個都不能認識。等等
2、選擇符級Hack:比如IE6能識別*html .class{},IE7能識別*+html .class{}或者*:first-child+html .class{}。等等
3、IE條件註釋Hack:比如針對所有IE:<!--[if IE]><!--您的程式碼--><![endif]-->,針對IE6及以下版本:<!--[if lt IE 7]><!--您的程式碼--><![endif]-->,這類Hack不僅對CSS生效,對寫在判斷語句裡面的所有程式碼都會生效。
注意書寫順序:一般是將識別能力強的瀏覽器的CSS寫在後面。通常先寫FF等非IE瀏覽器所需樣式,其次寫IE8所需樣式,接著是IE7的,再接著才是IE6的。
常用CSS hack
admin10000.com整理,以 color:red 將字型設定為紅色為例:
/* CSS屬性級Hack */ color:red; /* 所有瀏覽器可識別*/ _color:red; /* 僅IE6 識別 */ *color:red; /* IE6、IE7 識別 */ +color:red; /* IE6、IE7 識別 */ *+color:red; /* IE6、IE7 識別 */ [color:red; /* IE6、IE7 識別 */ color:red\9; /* IE6、IE7、IE8、IE9 識別 */ color:red\0; /* IE8、IE9 識別*/ color:red\9\0; /* 僅IE9識別 */ color:red \0; /* 僅IE9識別 */ color:red!important; /* IE6 不識別!important 詳情參見*/ ------------------------------------------------------------- /* CSS選擇符級Hack */ *html #demo { color:red;} /* 僅IE6 識別 */ *+html #demo { color:red;} /* 僅IE7 識別 */ body:nth-of-type(1) #demo { color:red;} /* IE9+、FF3.5+、Chrome、Safari、Opera 可以識別 */ head:first-child+body #demo { color:red; } /* IE7+、FF、Chrome、Safari、Opera 可以識別 */ :root #demo { color:red\9; } : /* 僅IE9識別 */ -------------------------------------------------------------- /* IE條件註釋Hack 詳情參見 */ <!--[if IE]>此處內容只有IE可見<![endif]--> <!--[if IE 6]>此處內容只有IE6.0可見<![endif]--> <!--[if IE 7]>此處內容只有IE7.0可見<![endif]--> <!--[if gte IE 6]> IE6以及IE6以上版本可識別 <![endif]--> <!--[if lt IE 7]> IE7以及IE7以下版本可識別 <![endif]--> <!--[if gte IE 7]> IE7以及IE7以上版本可識別 <![endif]--> <!--[if !IE]>此處內容只有非IE可見<![endif]-->
注意:css hack雖然可以解決個瀏覽器之間css顯示的差異問題,但是畢竟不符合W3C規範,我們平時寫css最好是按照標準來,這樣對我們以後維護也是大有好處的,實在不行再用。
比較著名的css hack 相容一覽圖:http://centricle.com/ref/css/filters/
相關文件:最全的CSS瀏覽器相容問題
相關文章
- angular瀏覽器相容性問題解決方案Angular瀏覽器
- 瀏覽器 CSS Hack 收集瀏覽器CSS
- 主流瀏覽器相容性問題與解決方案瀏覽器
- 瀏覽器相容性問題解決方案 · 總結瀏覽器
- CSS瀏覽器相容性的4個解決方案:瀏覽器CSS樣式初始化、瀏覽器私有屬性,CSS hack語法和自動化外掛CSS瀏覽器
- 對瀏覽器css相容性的學習理解及問題解決彙總瀏覽器CSS
- 瀏覽器相容性問題解決方案之CSS,已在IE、FF、Chrome測試瀏覽器CSSChrome
- 用jquery解決瀏覽器相容問題jQuery瀏覽器
- 關於CSS3及瀏覽器相容性問題CSSS3瀏覽器
- 前端必看!各大瀏覽器 CSS Hack 收集前端瀏覽器CSS
- JavaScript中解決多瀏覽器相容性23個問題的快速解決方法JavaScript瀏覽器
- CSS瀏覽器相容問題集CSS瀏覽器
- 解決瀏覽器解析度問題瀏覽器
- 各大瀏覽器滾動條相容性問題瀏覽器
- 如何機智地回答瀏覽器相容性問題瀏覽器
- 【css3】瀏覽器核心及其相容性CSSS3瀏覽器
- 區分各瀏覽器的CSS hack(包括360、搜狗、opera)瀏覽器CSS
- gulp外掛解決瀏覽器快取問題瀏覽器快取
- 一文解決瀏覽器跨域問題瀏覽器跨域
- 解決iPhone 瀏覽器上的圓角問題iPhone瀏覽器
- 瀏覽器相容性瀏覽器
- 瀏覽器-解決火狐瀏覽器總是提示Adobe Flash更新的問題瀏覽器
- CSS程式碼在不同瀏覽器相容問題CSS瀏覽器
- 解決flash在chrome瀏覽器列印空白的問題Chrome瀏覽器
- 解決Chrome瀏覽器啟動速度慢的問題Chrome瀏覽器
- IE瀏覽器下常見的CSS相容問題瀏覽器CSS
- 談談CSS瀏覽器的相容問題。集錦CSS瀏覽器
- 5 個技巧避免不必要的瀏覽器相容性問題瀏覽器
- 解決css瀏覽器不相容萬能方法CSS瀏覽器
- 完美解決setInterval在瀏覽器切換時加速的問題瀏覽器
- 解決瀏覽器返回頁面不重新整理的問題瀏覽器
- Ubuntu解決火狐瀏覽器無法同步書籤的問題Ubuntu瀏覽器
- 跨瀏覽器外掛技術瀏覽器
- 瀏覽器 history location pushstate的解決疑問瀏覽器
- 瀏覽器安全問題分析瀏覽器
- 瀏覽器相關問題瀏覽器
- 解決ie相容性問題
- Mac上如何測試IE瀏覽器相容性-虛擬機器解決方案Mac瀏覽器虛擬機