哪个更好:CSS Hack还是浏览器检测?

34
通常在浏览互联网时,我发现人们普遍使用CSS Hack来使他们的网站在所有浏览器中看起来相同。个人认为,找到所有这些Hack并测试它们非常耗费时间;每次更改您都必须在4个以上的浏览器中进行测试,以确保它没有破坏其他内容。
大约一年前,我在互联网上寻找其他主要网站正在使用的技术(雅虎,谷歌,BBC等),并发现它们大多数都在使用某种形式的浏览器检测(JS、HTML if语句、基于服务器)。我也开始使用这种方式。在我最近工作的几乎所有网站上,我都使用jQuery,因此我使用内置的浏览器检测。
您使用这两个技术的原因是什么?
15个回答

1

黑客技巧总是能够增加你的工作效率,而工作效率应该被优化。

首先添加黑客技巧,然后开始担心它们在不同浏览器和不同机器上的表现。

相反,你可以依赖于供应商特定的CSS扩展http://reference.sitepoint.com/css/vendorspecific


我看过一些Mozilla/FF扩展程序的使用情况,但其他的并不多。有人能否确认这些扩展程序可以使用吗? - Darryl Hein

1

0
个人而言,我发现找到所有这些hack并测试它们相当耗时;您所做的每一个更改都必须在4个或以上的浏览器中进行测试,以确保其没有影响其他的元素。
你不应该在每个浏览器上测试“正确”的CSS hack。
想法是编写符合标准的代码,然后添加特定的hack以针对一个并且仅一个浏览器(或渲染引擎),以修复它的错误。例如,编写“* html #myelement”来仅针对IE6进行异常处理:没有其他浏览器将受到该hack的影响,因此无需详尽地测试它。只有当出现一些新的奇怪的浏览器并犯了与IE6完全相同的错误时,才可能出现问题,但这种情况极不可能发生,也不是您的错,而且可以很快得到解决。
有些东西称自己为CSS hacks,但使用无效的构造,例如“_propertyname” hack。这可能会因为使用无效代码导致不同浏览器之间的不兼容性。请勿使用这些hack。
说实话,这已经不再是问题了,主要是因为IE5已经过时。如果您使用标准模式doctype并按照标准编写,它将在当前一轮的浏览器中大多数情况下正常工作。唯一真正剩下的问题是IE6,您可以使用“* html”来针对它;除此之外,您可能不需要更多的CSS hack。感谢上帝,Box Model Hack的日子已经结束了。

0

听从你的代码!肯特·贝克这样说。在咏春中,他们说:像弯曲的水一样!或者什么的。

看,这里有一个CSS Hack,可以让IE5理解html5:http://blog.whatwg.org/styling-ie-noscript

这里是使用JS相同的方法:http://blog.whatwg.org/supporting-new-elements-in-ie

将5页的Hack解释与5行易于理解的代码进行比较。所以,使用JS。

事物都有其好处和不足之处。你对问题的理解和实际代码的优雅程度引领着前进的道路。


0
CSS的hack并不是一个好的选择,因为浏览器会不断更新,新的更新可能会破坏你的hack。而使用Javascript浏览器检测,你可以准确地确认浏览器的能力。然而,另一个选择是使用最小化的CSS来确保在所有情况下都能正常工作。JQuery和其他用于UI的javascript库具有内置的浏览器能力检测功能,所以你应该去了解一下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接