各類瀏覽器hack

Hack是針對不一樣的瀏覽器去寫不一樣的CSS樣式,從而讓各瀏覽器能達到一致的渲染效果,那麼針對不一樣的瀏覽器寫不一樣的CSS CODE的過程,就叫CSS HACK,同時也叫寫CSS Hack。而後將Hack放在瀏覽器特定的CSS文件中,讓其符合條件的瀏覽器解析這些代碼,就如前面所說的條件樣式,咱們將CSS Hack代碼放入條件樣式文件中,符合條件的瀏覽器就解析,不符合的將不解析,從面達到您所須要的頁面渲染效果。總的一句話來講使用CSS Hack將會使用你的CSS代碼部分失去做用,而後藉助條件樣式,使用其原CSS代碼在一些瀏覽器解析,而CSS Hack代碼在符合條件要求的瀏覽器中替代原CSS那部分代碼。常見的就是在IE6下使用,不具體說,我想你們都有碰到過了。下面咱們就一塊兒來看看全部瀏 覽器都具備什麼Hack,換句話說,各類瀏覽器都能識別哪些CSS的寫法。html

下面是我收集有關於各瀏覽器下Hack的寫法web

一、Firefoxchrome

@-moz-document url-prefix() { .selector { property: value; } }
上面是僅僅被Firefox瀏覽器識別的寫法,具體如:瀏覽器

@-moz-document url-prefix() { .demo { color:lime; } }
支持Firefox的還有幾種寫法:url

/* 支持全部firefox版本 */ #selector[id=selector] { property: value; } 或者: @-moz-document url-prefix() { .selector { property: value; } } /* 支持全部Gecko內核的瀏覽器 (包括Firefox) */ *>.selector { property: value; }
二、Webkit枘核瀏覽器(chrome and safari)firefox

@media screen and (-webkit-min-device-pixel-ratio:0) { Selector { property: value; } }
上面寫法主要是針對Webkit內核的瀏覽器,如Google Chrome 和 Safari瀏覽器:htm

@media screen and (-webkit-min-device-pixel-ratio:0) { .demo { color: #f36; } }
三、Opera瀏覽器it

html:first-child>body Selector {property:value;} 或者: @media all and (min-width:0) { Selector {property: value;} } 或者: @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { head~body Selector { property: value; } }
上面則是Opera瀏覽器的Hack寫法:io

@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { head~body .demo { background: green; } }
四、IE9瀏覽器safari

:root Selector {property: value9;}
上面是IE9的寫法,具體應用以下:

:root .demo {color: #ff09;}
五、IE9以及IE9如下版本

Selector {property:value9;}
這種寫法只有IE9以及IE9如下版本能識別,這裏須要注意此處「9」只能是「9」不能是別的,好比說「8」,否則會失去效果的,如:

.demo {background: lime9;}
六、IE8瀏覽器

Selector {property: value\0;} 或者: @media screen{ Selector {property: value;} }
上面寫法只有IE能識別,如:

.color {color: #fff/;} 或者: @media screen{ .color {color: #fff;} }
七、IE8以及IE8如下到IE6的版本

Selector {property: value\9;}
這種寫法只有IE8以及IE8以上版本支持,如

.demo {color: #ff0;}
八、IE7瀏覽器

*+html Selector{property:value;} 或 *:first-child+html Selector {property:value;}
上面兩種是IE7瀏覽器下才能識別,如:

*+html .demo {background: green;} 或者: *:first-child+html .demo {background: green;}
九、IE7及IE7如下版本瀏覽器

Selector {*property: value;}
上面的寫法在IE7以及其如下版本均可以識別,如:

.demo {*background: red;}
十、IE6瀏覽器

Selector {_property/**/:/**/value;} 或者: Selector {_property: value;} 或者: *html Selector {property: value;}
具體應用以下:

.demo {_width/**/:/**/100px;} 或者: .demo {_width: 100px;} 或者: *html .demo {width: 100px;}
上面具體介紹了各類版本瀏覽器下如何識別各類的Hack寫法,包括了IE6-9以及現代版本的瀏覽器寫法。綜合上面的所述,咱們針對不一樣瀏覽器的Hack寫法主要分爲兩種從CSS選擇器和CSS屬性上來區別不一樣的Hack寫法。下面咱們分別來看這兩種的不一樣寫法:

CSS選擇器的Hack寫法
下面咱們主要來看CSS選擇器和CSS屬性選擇器在不一樣瀏覽器的支持狀況。下面先來看CSS選擇器支持狀況。

CSS選擇器的Hack寫法

一、IE6以及IE6如下版本瀏覽器

* html .demo {color: green;}
二、僅僅IE7瀏覽器

*:first-child+html .demo {color: green;}
三、除IE6以外的全部瀏覽器(IE7-9, Firefox,Safari,Opera)

html>body .demo {color: green;}
四、IE8-9,Firefox,Safari,Opear

html>/**/body .demo {color: green;}
五、IE9+

:root .demo {color: red;}
六、Firefox瀏覽器

@-moz-document url-prefix() { .demo { color: red; } }
六、Webkit內核瀏覽器(Safari和Google Chrome)

@media screen and (-webkit-min-device-pixel-ratio:0) { .demo { color: red; } }
七、Opera瀏覽器

@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { head~body .demo { color: red; } }
八、iPhone / mobile webkit

@media screen and (max-device-width: 480px) { .demo { color: red } }
CSS屬性Hack寫法
一、IE6瀏覽器

.demo {_color: red;}
二、IE6-7瀏覽器識別

.demo {*color: red;}
三、全部瀏覽器除IE6瀏覽外

.demo {color/**/:red;}

相關文章
相關標籤/搜索