4

我刚开始在一家相当大的公司工作,我的团队管理着他们所有面向公众的网站。我今天第一次打开样式表,看到了超过 20 个设计人员使用语音系列破解来修复 IE 错误的实例。(我不知道他们为什么允许平面设计师编写任何类型的标记)

Voice-family hack的公众舆论是什么。值得花时间推荐使用 IE 条件注释来包含自定义样式表吗?

4

4 回答 4

6

“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,它有很多关于这个主题的很好的信息和教程:

http://www.webstandards.org/

如果您将编码风格转向符合标准,您通常不必担心未来浏览器的发布。是的,您仍然需要针对它们进行测试,但您不必编写然后测试每个自定义样式表。

于 2008-10-01T16:45:31.020 回答
4

任何类型的黑客都是危险的,因为它们很容易在未来的浏览器中产生意想不到的影响(很多都被 IE7 破坏了)。过滤 CSS 的安全方法是:

  • (仅适用于 IE)使用条件注释。这些将始终在 Microsoft 浏览器上运行,并且始终被所有其他浏览器忽略,因为它们在评论中
  • 功能定位 - 使用仅现代浏览器支持的 CSS 选择器来阻止旧浏览器尝试解释规则。然而,浏览器识别语法这一事实并不意味着它可以正确处理它。你在这里保证的是旧浏览器不会尝试呈现这些规则,而不是现代浏览器会正确执行它们

尽可能使用所有主流浏览器正确支持的 CSS 子集。随着旧的错误浏览器下降到用户的可忽略百分比,随着时间的推移,这种情况正在改善。

于 2008-10-01T17:40:47.830 回答
1

我对这样的黑客的感觉是,如果可以的话,你应该避免它们。如果可以在不诉诸此类恶作剧的情况下跨浏览器获得正确的渲染,那么您应该以正确的方式进行。然而,有时浏览器有错误的 CSS 实现,有必要使用这样的 hack。

于 2008-10-01T14:56:32.967 回答
1

不要使用条件包含。改用CSS 选择器,它更优雅。您可以在单个浏览器(和/或版本)上定位类:

。我的课 { ... }

.ie6 .myClass { ... }

于 2008-10-01T15:52:37.887 回答