- 关于CSS HACK 能够拜见这个网站http://browserhacks.com/。
- 网上许多材料中经常把!important也作为一个hack手腕,实在这是一个误区。!important经常被我们用来变动款式,而不是兼容hack。形成这个误区的原因是IE6在某些状况下不主动辨认!important,以至于经常被人误用做辨认IE6的hack。但是,人人注重一下,IE6只是在某些状况下不辨认(ie6下,同一个大括号里对同一个款式属性定义,个中一个加important则important标记是被疏忽的,例:{background:red!important; background:green;},ie6下解释为背景色green,别的浏览器解释为背景色red;假如这同一个款式在差别大括号里定义,个中一个加important则important发挥平常作用,例:div{background:red!important},div{background:green},这时候一切浏览器一致解释为背景色red。)
- 实例解说:
- Hack运用情境(一)
- 适用范围:IE:6.0,IE7.0,IE8.0之间的兼容
- 实例申明:
- 此例中我们运用了渐进辨认的体式格局,从整体中逐步消除部份。起首,奇妙的运用“9”这一标记,将IE巡游器从一切状况中星散出来。接着,再次运用“+”将IE8和IE7、IE6星散开来,此时,我们的IE8已自力辨认。
- 实例代码:
.bb{
height:32px;
background-color:#f1ee18;/*一切辨认*/
.background-color:#00deff\9; /*IE6、7、8辨认*/
+background-color:#a200ff;/*IE6、7辨认*/
_background-color:#1e0bd1;/*IE6辨认*/
}
/*一个用于展现的class为bb的div标签*/
< div class ="bb"></ div >
- 适用范围:IE:6.0,IE7.0,IE8.0,Firefox之间的兼容
- 实例申明:
- 人人很轻易的能够看出这是情境(一)的加强版,适用于更普遍的环境。实在情境(一)中也已做到了把火狐与IE巡游器分辨开来了,如今我们要做的是把火狐从别的巡游器中再次辨认出来。人人细致看下代码,人人会发明实在巡游器辨认是很简单的。火狐怎样辨认?对了,IE中对伪类支撑不普遍,所以伪类是个不错的门路。(.yourClass,x:-moz-any-link,
x:default)注重,这个分辨伪类每每IE7也能辨认,所以最好还需要把IE7零丁辨认出来,且此要领对ff3.6
已无效,firefox的分辨能够运用@-moz-document url-prefix(){} - 实例代码:
.bb{
height:32px;
background-color:#f1ee18;/*一切辨认*/
background-color:#00deff\9; /*IE6、7、8辨认*/
+background-color:#a200ff;/*IE6、7辨认*/
_background-color:#1e0bd1;/*IE6辨认*/
}
.bb, x:-moz-any-link, x:default{background-color:#00ff00;}/*IE7 firefox3.5及以下 辨认 */
@-moz-document url-prefix(){.bb{background-color:#00ff00;}}/* 仅firefox 辨认 */
* +html .bb{background-color:#a200ff;}/* 仅IE7 辨认 */
/*一个用于展现的class为bb的div标签*/
< div class ="bb"></ div >
- 适用范围:IE:6.0,IE7.0,IE8.0,Firefox,Safari(Chrome)之间的兼容
- 实例申明:
- 我们如今将再次对我们的CSS举行加强了,使其能辨认Safari(Chrome)巡游器。这是基于它们的内核webkit来辨认的,用法为@media screen and (-webkit-min-device-pixel-ratio:0)
- 实例代码:
.bb{
height:32px;
background-color:#f1ee18;/*一切辨认*/
background-color:#00deff\9; /*IE6、7、8辨认*/
+background-color:#a200ff;/*IE6、7辨认*/
_background-color:#1e0bd1;/*IE6辨认*/
}
@media screen and (-webkit-min-device-pixel-ratio:0){.bb{background-color:#f1ee18}}{}
/*safari(Chrome) 有用 */
.bb, x:-moz-any-link, x:default{background-color:#00ff00;}/*IE7 firefox3.5及以下 辨认 */
@-moz-document url-prefix(){.bb{background-color:#00ff00;}}/*仅firefox 辨认*/
* +html .bb{background-color:#a200ff;}/* 仅IE7 辨认 */
/*一个用于展现的class为bb的div标签*/
< div class ="bb"></ div >
- 适用范围:IE:6.0+,FireFox:2.0+,Opera 10.0+,Sarari 3.0+,Chrome全兼容
- 实例申明:
- 实例的详细代码在下面实例代码中已列出,详细结果云云页面的顶端部份结果,您能够经由过程差别巡游器检测该结果。此次我们基本把一切的主流巡游器都兼容了,人人来看下代码。Opera的辨认有一部份归功于“0”标记,这个标记只被IE8和Opera辨认,特别的标记每每作育的是我们更普遍的hack手腕。下例的代码比较完全,人人能够挑选参考。
- 实例代码:
<style type="text/css">
/***************************************** 各巡游器兼容CSS **********************************************/
.bb{height:32px;background-color:#f1ee18;/*一切辨认*/ background-color:#00deff\9; /*IE6、7、8辨认*/ +background-color:#a200ff;/*IE6、7辨认*/ _background-color:#1e0bd1/*IE6辨认*/}
@media screen and (-webkit-min-device-pixel-ratio:0){.bb{background-color:#f1ee18}}{} /* Safari(Chrome) 有用 */
@media all and (min-width: 0px){ .bb{background-color:#f1ee18;/*opera and Safari(Chrome) and firefox*/ background-color:#4cac70\0;}/* 仅 Opera 有用 */ }{}
.bb, x:-moz-any-link, x:default{background-color:#4eff00;/*IE7、Firefox3.5及以下 辨认 */}
@-moz-document url-prefix(){.bb{background-color:#4eff00;/*仅 Firefox 辨认 */}}
* +html .bb{background-color:#a200ff;}/* 仅IE7 辨认 */
/* 平常状况下 我们分辨IE7 只用 +background-color 合营 _background-color 就好了 假如必需写 .bb, x:-moz-any-link, x:default 如许的代码分辨 Firefox3.5及以下 则服膺此写法对IE7也有用,故在个中要再重写一次
+background-color 或许运用 * +html .bb{background-color:blue;} 要领仅对 IE7 有用。可运用 @-moz-document url-prefix(){} 要领自力分辨一切 firefox */
.browsers td{width:8%;text-align:center;padding:8px;}}
.browsercolor{color:#333;font-size:18px;font-weight:bold;}
.ie6{background-color:#1e0bd1}
.ie7{background-color:#a200ff}
.ie8{background-color:#00deff}
.firefox{background-color:#4eff00}
.opera{background-color:#4cac70}
.other{background-color:#f1ee18;}
#tipTable td,#tipTable th{border:1px solid black;width:56px;height:16px;text-align:center;}
#wordTable td{margin-left:8px;}
#firefoxTip{display:none;}
#firefoxTip, x:-moz-any-link, x:default{display:block;/*IE7 firefox3.5及以下 辨认 */+display:none/*再分辨一次IE7*/}
@-moz-document url-prefix(){#firefoxTip{display:block;/*仅 firefox 辨认 */}}
#ChromeTip{display:none;}
@media screen and (-webkit-min-device-pixel-ratio:0){#ChromeTip{display:block;}}{} /* safari(Chrome) 有用 */
@media all and (min-width: 0px){#ChromeTip{display:none\0;} /* 仅 Opera 有用 */ }{}
</style>
<table class="browsers" width="100%" cellspacing="0" cellpadding="0">
<tr><td>IE6</td><td></td><td>IE7</td><td></td><td>IE8</td><td></td><td>Firefox</td><td></td><td>Opera</td><td></td><td>Safari(Chrome)</td><td></td></tr>
<tr class="browsercolor"><td class="ie6">IE6</td><td></td><td class="ie7">IE7</td><td></td><td class="ie8">IE8</td><td></td><td class="firefox">Firefox</td><td></td><td
class="opera">Opera</td><td></td><td class="other">Safari(Chrome)</td><td></td></tr>
</table>
<div class="bb">
<span style="display:none;display:block\0;display:none\9;">Opera的分辨色是深绿色,Opera巡游器很时兴么。</span >
<span id="firefoxTip">Firefox的分辨色是浅绿色,Firefox是很壮大的巡游器。</span >
<span id="ChromeTip">Safari和Chrome的分辨色是金黄色,Safari和Chrome运用的都是Webkit内核</span >
<!--[if IE 8]>IE8的分辨色是蓝色,新版IE8的功用但是不少呢。<![endif]-->
<!--[if IE 7]>IE7的分辨色是紫色,IE7还能够凑合著用!<![endif]-->
<!--[if IE 6]>IE6的分辨色是赤色,不过,IE6但是有点落伍了!<![endif]-->
</div>