关于“语音家庭”黑客的共识是什么?

时间:2008-10-01 14:49:34

标签: html css xhtml

我刚刚开始为一家规模很大的公司工作,我的团队负责管理所有面向公众的网站。我今天第一次打开样式表,看到超过20个设计师使用语音家庭黑客修复IE错误的实例。 (我不知道他们为什么允许图形设计师编写任何类型的标记)

语音家庭黑客的一般公众舆论是什么?值得花时间推荐使用IE条件注释来包含自定义样式表吗?

4 个答案:

答案 0 :(得分:5)

“语音家族”黑客,被称为Tantek Celik Box Model Hack,用于在Windows上隐藏IE4 / 5中的特定CSS规则,因为这些浏览器中的CSS标准实现不正确。它试图向所有浏览器提供最正确的单一样式表,而无需借助浏览器嗅探和多个样式表。

具有讽刺意味的是,这种破解是许多工时(数月?)的实验和测试的结果,以开发符合标准的样式表,适用于较旧的,较新的和未来的浏览器。这是为弥补浏览器符合CSS标准的可怕状态而创建的几种解决方法之一。

请参阅Jeffrey Zeldman的使用Web标准进行设计深入了解为什么坚持标准(尽可能多)是一个有价值的目标,以及为什么使用浏览器嗅探和多个样式表只会导致头痛对于开发者:

http://www.amazon.com/Designing-Web-Standards-Jeffrey-Zeldman/dp/0321385551/

一个例子是军备竞赛以跟上浏览器/操作系统的组合,更不用说移动电话和其他具有浏览功能的设备了。检测代码必须随每个新组合而改变,并且由于许多浏览器伪装成Netscape Navigator的方式,检测可以成为全职工作。

另一个很好的参考是Web标准项目,它有很多关于这个主题的好的信息和教程:

http://www.webstandards.org/

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

答案 1 :(得分:4)

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

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

尽可能使用所有主流浏览器都支持的CSS子集。随着时间的推移,这种情况正在改善,因为较旧的浏览器会降低用户可忽略的百分比。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

.myClass {...}

.ie6 .myClass {...}