在写CSS样式编码时,难免会遇到对特定的浏览器进行样式设定。
在讲述CSS的Hack前,先来了解下什么是CSS Hack?
什么是CSS Hack呢?(资料来源互联网)
CSS hack由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。
OK,言归正传,下面先上代码展示下不同浏览器下的CSS Hack是如何编写的:
selector{ property:value; /* 正常写法普遍支持 */ property:value9; /* 所有IE浏览器(ie6+)支持 */ /*但是IE8不能识别“ * ”和“ _ ” */ [color:#000;color:#0F0; /* SF,CH支持 */ color:#00F\0; /* IE8*/ +property:value; /* IE7 */ _property:value; /* IE6 */ }
CSS内部属性级Hack
语法:
selector{<hack>?property:value<hack>?;}
取值:
_: 选择IE6及以下。连接线(中划线)(-)亦可使用,为了避免与某些带中划线的属性混淆,所以使用下划线(_)更为合适。
*:选择IE7及以下。诸如:(+)与(#)之类的均可使用,不过业界对(*)的认知度更高。
9:选择IE6+。
\0:选择IE8+和Opera。
[;property:value;]; 选择webkit核心浏览器(Chrome,Safari)。IE7及以下也能识别。中括号内外的3个分号必须保留,第一个分号前可以是任意规则或任意多个规则。 [;color:#f00;]; 与 [color:#f00;color:#f00;]; 与 [margin:0;padding:0;color:#f00;]; 是等价的。生效的始终是中括号内的最后一条规则,所以通常选用第一种写法最为简洁。
以下是实战代码:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>【CSS兼容】CSS在不同浏览器下的Hack(IE6 / IE7 /IE8 /Firefox)-逐风的技术之路</title> </head> <style type="text/css" media="screen"> p.ie{ height:60px;text-align:center;line-height:60px;border:1px dashed #bbb;background:#f7f7f7; color:blue;/* 非IE9下为蓝色 */ color:brown9;/* IE9下为棕色 */ +color:red;/* IE7下为红色 */ _color:green;/* IE6下为绿色 */ } </style> <body style="width:500px;margin:0 auto;"> <p class="ie"> <span style="display:block;/* 非IE9下为块元素 */display:none9;/* IE9下隐藏 */">嘿嘿,小子竟然也用Firefox,蓝色文字。</span> <!--[if IE 8]>不错不错,挺先进的嘛,使用IE8呢!文字是褐色的。<![endif]--> <!--[if IE 7]>你,IE7,红色文字!<![endif]--> <!--[if IE 6]>孩子,虽然显示的是绿色文字,不过,IE6可不是好东西呢!<![endif]--> </p> </body> </html>