开发人员数学一份代码上传到服务器,一份代码提供所有用户下载,用户浏览器不同,会出现渲染效果不同。为了保证所有用户浏览器加载效果相同,需要在同一份代码中书写不同的结构给不同的浏览器,这种方法就叫hack方法 ( Hacker 黑客)
hack方法就是在同一份代码中给不同的浏览器书写不同的css,保证最终展现加载效果一致。
hack 符号 | 兼容浏览器 | |
属性 | - _ (属性名前面) | IE6及以下 |
!$ * ( ) = % @ , . / ` [ ] # ~ ? : < > | (属性名前面) | IE7及以下 | |
\0/ (属性名后面) | 仅IE8 | |
\0 (属性名后面) | IE8及以上 | |
\9 (属性名后面) | IE10及以下 | |
选择器 | * html .selector {} | IE6及以下 |
.selector, {} | IE7及以下 | |
html > body .selector {} | 不兼容IE6及以下 | |
html > /**/ body .selector {} html ~ /* */ body .selector {} | 不兼容IE6及以下 |
属性是官方给出的写法,选择器是后面一些聪明的程序员想出的方法。
* html .selector {} :通配符后代有一个html,html后代有一个选择器,选择器满足就可以选择标签。普通浏览器认为一个html页面中跟标签就是一个html没有祖先级,普通浏览器不认;但是IE6及以下浏览器比较包容
.selector, {} :逗号表示是并集选择器,IE7以上浏览器逗号后没有选择器认为该书写形式错误,报错;而IE7及以下认为该形式只是没有书写完成,仍然进行加载
html > body .selector {} :> 是css3的子级选择器,IE6及以下不认
html > /**/ body .selector {} 和html ~ /* */ body .selector {} :IE7认为注释部分打乱了结构