CSS Hack解析

引用地址:http://www.jb51.net/css/384124.html

其实自己也有用到,也就是这里面第一种,IE条件注释
简单来说就是对IE样式的一种兼容

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生效

.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方法常常是后两者。

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 */  

因为没有找到 op10 的 css hack,所以标准的写法是给 op10 的,然后针对其他浏览器写 css hack。
另外,在修复过程中,我发现了网上流传的一个 css hack 有问题,这个 css hack 也许有很多人在用,就是[属性:值\0],有的人说这是 ie8 专用的,但我在测试过程中发现这个 css hack 除了 ie8 识别外,ff3 和 op10 也能识别(ff2 和 ff3.5 不能识别)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值