我刚开始在一家相当大的公司工作,我的团队管理着他们所有面向公众的网站。我今天第一次打开样式表,看到了超过 20 个设计人员使用语音系列破解来修复 IE 错误的实例。(我不知道他们为什么允许平面设计师编写任何类型的标记)
Voice-family hack的公众舆论是什么。值得花时间推荐使用 IE 条件注释来包含自定义样式表吗?
“voice-family” hack,更广为人知的是 Tantek Celik Box Model Hack,用于在 Windows 上隐藏特定的 CSS 规则,因为这些浏览器中的 CSS 标准实现不正确。它试图向所有浏览器提供最正确的单个样式表,而无需借助浏览器嗅探和多个样式表。
具有讽刺意味的是,这种 hack 是许多工时(数月?)的实验和测试的结果,以开发适用于旧版、新版和未来浏览器的符合标准的样式表。它是为弥补浏览器遵守 CSS 标准的可怕状态而创建的几种解决方法之一。
请参阅 Jeffrey Zeldman 的Designing with Web Standards以深入了解为什么遵守标准(尽可能地)是一个有价值的目标,以及为什么使用浏览器嗅探和多个样式表只会让开发人员头疼:
http://www.amazon.com/Designing-Web-Standards-Jeffrey-Zeldman/dp/0321385551/
一个例子是为了跟上浏览器/操作系统组合的军备竞赛,更不用说手机和其他具有浏览功能的未来设备了。每个新组合都必须更改检测代码,并且由于许多浏览器伪装成 Netscape Navigator 的方式,检测可以成为一项全职工作。
另一个很好的参考是 Web Standards Project,它有很多关于这个主题的很好的信息和教程:
如果您将编码风格转向符合标准,您通常不必担心未来浏览器的发布。是的,您仍然需要针对它们进行测试,但您不必编写然后测试每个自定义样式表。
任何类型的黑客都是危险的,因为它们很容易在未来的浏览器中产生意想不到的影响(很多都被 IE7 破坏了)。过滤 CSS 的安全方法是:
尽可能使用所有主流浏览器正确支持的 CSS 子集。随着旧的错误浏览器下降到用户的可忽略百分比,随着时间的推移,这种情况正在改善。
我对这样的黑客的感觉是,如果可以的话,你应该避免它们。如果可以在不诉诸此类恶作剧的情况下跨浏览器获得正确的渲染,那么您应该以正确的方式进行。然而,有时浏览器有错误的 CSS 实现,有必要使用这样的 hack。