CSS hack 是通过在 CSS 样式中加入一些特殊的符号, 让不同的浏览器识别不同的符号 (什么样的浏览器识别什么样的符号是有标准的, CSS hack 就是让你记住这个标准), 以达到应用不同的 CSS 样式的目的.
CSS hack 是因为现有浏览器对标准的解析不同, 为了兼容各浏览器, 所采用的一种补救方法. 为了兼容低版本浏览器器的 CSS 解析 BUG, 不得不把代码写的很绕, 直接增加了维护成本.
CSS hack 是一种类似作弊的手段, 以欺骗浏览器的方式达到兼容的目的, 是用浏览器的兼容性差异来解决浏览器的兼容性问题. 因此, 在设计之初, 写 CSS hack 需要遵循以下三条原则:
有效: 能够通过 web 标准的验证
只针对太古老的 / 不再开发的 / 已被抛弃的浏览器, 而不是目前的主流浏览器
代码要丑陋. 让人记住这是一个不得已而为之的 Hack, 时刻记住要想办法去掉它.
现在很多 hacks 已经抛弃了最初的原则, 而滥用 hack 会导致浏览器更新之后产生更多的兼容性问题. 因此, 并不推荐使用 CSS hack 来解决兼容性问题.
CSS Hack 常见的有三种形式:
CSS 属性 Hack,CSS 选择符 Hack 以及 IE 条件注释 Hack, Hack 主要针对 IE 浏览器.
1, 属性级 Hack: 比如 IE6 能识别下划线 "_" 和星号 "*",IE7 能识别星号 "*", 但不能识别下划线 "_", 而 Firefox 两个都不能认识.
2, 选择符级 Hack: 比如 IE6 能识别 * html .class{},IE7 能识别 *+HTML .class{} 或者 *:first-child+HTML .class{}.
3,IE 条件注释 Hack:IE 条件注释是微软 IE5 开始就提供的一种非标准逻辑语句. 比如针对所有 IE:<!-[if IE]><!- 您的代码 -><![endif]>, 针对 IE6 及以下版本:<!-[if it IE 7]><!- 您的代码 -><![endif]->, 这类 Hack 不仅对 CSS 生效, 对写在判断语句里面的所有代码都会生效.
PS: 条件注释只有在 IE 浏览器下才能执行, 这个代码在非 IE 浏览下被当做注释视而不见. 可以通过 IE 条件注释载入不同的 CSS,JS,HTML 和服务器代码等.
更多前端开发 https://www.html.cn/ 知识, 请查阅 HTML 中文网 !!
来源: http://www.css88.com/qa/css3/14323.html