用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瀏覽器相容性的4個解決方案:瀏覽器CSS樣式初始化、瀏覽器私有屬性,CSS hack語法和自動化外掛CSS瀏覽器
- 主流瀏覽器相容性問題與解決方案瀏覽器
- 對瀏覽器css相容性的學習理解及問題解決彙總瀏覽器CSS
- 各大瀏覽器滾動條相容性問題瀏覽器
- 如何機智地回答瀏覽器相容性問題瀏覽器
- gulp外掛解決瀏覽器快取問題瀏覽器快取
- 一文解決瀏覽器跨域問題瀏覽器跨域
- 瀏覽器相容性瀏覽器
- CSS程式碼在不同瀏覽器相容問題CSS瀏覽器
- 解決csdn關注瀏覽全文問題
- 解決Chrome瀏覽器啟動速度慢的問題Chrome瀏覽器
- Ubuntu解決火狐瀏覽器無法同步書籤的問題Ubuntu瀏覽器
- 解決瀏覽器返回頁面不重新整理的問題瀏覽器
- 完美解決setInterval在瀏覽器切換時加速的問題瀏覽器
- python用selenium開啟瀏覽器後瀏覽器關閉---解決辦法Python瀏覽器
- 瀏覽器相關問題瀏覽器
- 解決ie相容性問題
- 解決ajax回撥window.open瀏覽器阻止彈窗問題瀏覽器
- 關閉 Chrome 瀏覽器時意外掛起的問題解決了!Chrome瀏覽器
- Edge瀏覽器被搜狗瀏覽器篡改的解決方法瀏覽器
- 常遇到的瀏覽器相容性有哪些?你是怎樣解決的?瀏覽器
- 如何定位瀏覽器卡死問題瀏覽器
- 圖片在瀏覽器上從http變成https問題的解決方案瀏覽器HTTP
- 解決Chrome瀏覽器百度網頁開啟很慢的問題Chrome瀏覽器網頁
- CSS Houdini:用瀏覽器引擎實現高階CSS效果CSS瀏覽器
- win10瀏覽器相容性怎麼設定_win10瀏覽器相容性設定方法Win10瀏覽器
- 針對ie、safari瀏覽器時間格式化NAN問題解決方法瀏覽器NaN
- 完美解決瀏覽器輸入http被自動跳轉至https問題瀏覽器HTTP
- [20191118]使用Chrome瀏覽器問題.txtChrome瀏覽器
- 導航的瀏覽器相容問題瀏覽器
- (16)CSS 擴充:① 瀏覽器相容 | CSSCSS瀏覽器
- 史上最全的CSS hack方式一覽CSS
- 瀏覽器與伺服器通訊技術——jsonp瀏覽器伺服器JSON
- 幾款瀏覽器相容性測試工具瀏覽器
- 【技術分享】如何使用FMEA解決問題?
- edge瀏覽器相容性設定在哪 新版edge瀏覽器相容模式怎麼弄瀏覽器模式
- 瀏覽器安全防範,小程式類技術或許是更優的解決方式瀏覽器
- vue SPA專案,瀏覽器和nginx反向代理快取問題解決實方案Vue瀏覽器Nginx快取