简单介绍CSS hack的使用
2015-09-27 10:38
701 查看
css hack 是个很有争议的东西,一开始我也很讨厌,因为我觉得可以饶过 css hack,通过另外的方法解决问题。但是,随着工作中的不断实践,改变了我的观点,css hack 虽然不能通过 w3c 标准认证,但适当是使用很有可能会使你的 HTML 结构更紧凑、有效的减少无语义标签或带来其他好处。
1.IE条件注释法
该方法安全性好,但是不利于开发维护。比如涉及到针对不同版本IE的css。
<!--[if IE]><![endif]--> 只在IE下有效
<!--[if IE 6]><![endif]--> 只在IE6有效
<!--[if gt IE 6]><![endif]--> 只在IE6以上版本有效
注意:结合lte、lt、gte、gt、!关键字使用。
2.选择符前缀法
“*html” 前缀只对IE6生效 "*+html"前缀只对IE7生效
缺点:不能保证IE9,10不识别*html,*+html,有向后兼容风险。
3.样式属性前缀法:
如“_”只在IE6下生效,“*”在IE6和IE7下生效。同样有向后兼容隐患。
.test{width:80px;*width:70px;_width:60px;}
可用于内联样式
由于IE条件注释法不利于开发维护,实际中常用的hack方法常常是后两者。
小例子
html 代码
css hack 代码
查看Demo
因为没有找到 op10 的 css hack,所以标准的写法是给 op10 的,然后针对其他浏览器写 css hack。
另外,在修复过程中,我发现了网上流传的一个 css hack 有问题,这个 css hack 也许有很多人在用,就是[属性:值\0],有的人说这是 ie8 专用的,但我在测试过程中发现这个 css hack 除了 ie8 识别外,ff3 和 op10 也能识别(ff2 和 ff3.5 不能识别)。
1.IE条件注释法
该方法安全性好,但是不利于开发维护。比如涉及到针对不同版本IE的css。
<!--[if IE]><![endif]--> 只在IE下有效
<!--[if IE 6]><![endif]--> 只在IE6有效
<!--[if gt IE 6]><![endif]--> 只在IE6以上版本有效
注意:结合lte、lt、gte、gt、!关键字使用。
2.选择符前缀法
“*html” 前缀只对IE6生效 "*+html"前缀只对IE7生效
.test{width:80px;} /*IE 6 7 8*/ *html .test{width:70px;} /*IE6*/ *+html .test{width:60px;}/*IE7*/
缺点:不能保证IE9,10不识别*html,*+html,有向后兼容风险。
3.样式属性前缀法:
如“_”只在IE6下生效,“*”在IE6和IE7下生效。同样有向后兼容隐患。
.test{width:80px;*width:70px;_width:60px;}
可用于内联样式
:<div style="width:80px;*width:70px;_width:60px;"></div>
由于IE条件注释法不利于开发维护,实际中常用的hack方法常常是后两者。
小例子
html 代码
<body> <p>您的浏览器是</p> </body>
css hack 代码
p { margin:0; padding:0 55px 0 0; height:30xp; line-height:30px; font-size:14px;} p { background:url(llq.gif) 90px -170px no-repeat;} /* all */ p,x:-moz-any-link { background:url(llq.gif) 90px -80px no-repeat;} /* for ff */ p,x:-moz-any-link,x:default { background:url(llq.gif) 90px -140px no-repeat;} /* for ff2+ */ p {[;background:url(llq.gif) 90px -260px no-repeat;]} /* for sa/ch */ p { background:url(llq.gif) 90px -50px no-repeat\9;} /* for ie */ *+html p { background:url(llq.gif) 90px -20px no-repeat;} /* only for ie7 */ p { _background:url(llq.gif) 90px 10px no-repeat;} /* only for ie6 */
查看Demo
因为没有找到 op10 的 css hack,所以标准的写法是给 op10 的,然后针对其他浏览器写 css hack。
另外,在修复过程中,我发现了网上流传的一个 css hack 有问题,这个 css hack 也许有很多人在用,就是[属性:值\0],有的人说这是 ie8 专用的,但我在测试过程中发现这个 css hack 除了 ie8 识别外,ff3 和 op10 也能识别(ff2 和 ff3.5 不能识别)。
相关文章推荐
- CSS3 Animation transform
- 每天一个css css选择器
- 常用DIV+CSS命名大全集合
- CSS3中和动画有关的属性transform、transition 和 animation
- DOM与CSS样式表
- CSS动画标签
- CSS动画标签
- 【css】day02_css选择器_border_box_背景
- css 2d/3d转换代码以及案例
- 【css】day01_css概述_使用CSS_CSS语法
- 浏览器兼容及css3属性基础
- 7个你可能不认识的CSS单位:rem vh vw vmin vmax ex ch
- 常用的CSSreset整理
- css常见问题解析1
- Css3基本用法
- CSS3实现动画
- DOM与元素节点内联样式
- CSS设置一行文字,超出部分自动隐藏
- CSS设置一行文字,超出部分自动隐藏
- css总结