关于"语音家庭"黑客的共识是什么?
我刚开始为一家大型公司工作,我的小组管理着所有面向公众的网站。我今天第一次打开了样式表,并且看到20多个使用语音家族黑客修复IE错误的设计师实例。 (我不知道他们为什么允许图形设计师完全编写任何类型的标记)
语音家庭黑客的一般民意是什么。是否值得花时间推荐使用IE条件注释来包含自定义样式表?
解决方案
我对这种黑客的感觉是,如果可以的话,应该避免使用它们。如果可以在不借助这种欺骗手段的情况下跨浏览器获得正确的呈现,则应以正确的方式进行操作。但是,有时浏览器的CSS实现有问题,因此有必要使用这种黑客工具。
不要使用条件包含。改用CSS选择器,它更优雅。我们可以将类定位到单独的浏览器(和/或者版本):
。我的课 { ... }
.ie6 .myClass {...}
由于在这些浏览器中CSS标准的实现不正确,"语音家族" hack(通常称为Tantek Celik Box模型Hack)用于隐藏Windows上IE4 / 5中的特定CSS规则。这是尝试向所有浏览器提供最正确的单个样式表,而不求助于浏览器嗅探和多个样式表。
具有讽刺意味的是,这种黑客攻击是许多实验和测试工作的结果,这些实验和测试用于开发可在旧,更新和将来的浏览器上使用的符合标准的样式表。它是为弥补浏览器对CSS标准的可怕状态而创建的几种解决方法之一。
请参阅Jeffrey Zeldman的"使用Web标准进行设计",深入了解为什么坚持标准(尽可能多)是一个值得的目标,以及为什么使用浏览器嗅探和多个样式表只会使开发人员感到头疼:
http://www.amazon.com/Designing-Web-Standards-Jeffrey-Zeldman/dp/0321385551/
一个例子是军备竞赛,以跟上浏览器/操作系统的组合,更不用说移动电话和其他具有浏览功能的未来设备。每个新的组合都必须更改检测代码,并且由于许多浏览器伪装成Netscape Navigator的方式,检测可以成为一项全职工作。
另一个很好的参考是Web Standards Project,它提供了很多有关该主题的信息和教程:
http://www.webstandards.org/
如果我们将编码风格转向符合标准,则通常不必担心将来的浏览器的发布。是的,我们仍然需要针对它们进行测试,但是我们不必为每个样式表编写然后测试自定义样式表。
任何形式的黑客都是危险的,因为它们很容易在未来的浏览器中产生意想不到的影响(很多被IE7破坏)。过滤CSS的安全方法是:
- (仅适用于IE)使用条件注释。这些将始终在Microsoft浏览器上运行,并且在注释中始终被所有其他浏览器忽略
- 功能定位-使用仅现代浏览器支持的CSS选择器来阻止尝试解释规则的旧版浏览器。但是,浏览器可以识别语法这一事实并不意味着它可以正确处理它。我们在此保证的是,较旧的浏览器不会尝试呈现这些规则,而不是现代的浏览器会正确执行这些规则
尽可能使用所有主要浏览器均正确支持的CSS子集。随着时间的推移,这种情况正在改善,因为较旧的Buggier浏览器下降到用户的可忽略的百分比。