为每个用户代理提供不同的CSS文件是否更好?或者更好地使用只有某些浏览器才能看到的CSS黑客?
答案 0 :(得分:7)
都不是。
最好是编写适用于所有浏览器的代码,而无需浏览器特定代码或css hacks。它当然不是那么容易实现,这就是许多人使用其他方法的原因。
关键是要避免某些浏览器(通常是Internet Explorer)出现问题。其中一个问题是使用填充而不是边距,因为IE无法正确处理边距折叠。
黑客边界线中的一些方法是使用不影响正常工作的浏览器的代码,但修复了特定浏览器的问题。这可能是指定通常不需要的元素的高度,或者在浮动元素上指定display:inline
。
页面Position is everything包含一些错误和建议修复的示例。 (通常修复是某种破解,所以你当然也应该考虑是否可以完全避免这个问题。)
答案 1 :(得分:3)
最好不要这样做。
一个好的css-reset和css可以使用相同的跨浏览器,这是一个更好的解决方案。
如果你的设计绝对排除了那个,那么(并且只有那时)我会尝试黑客或IE条件评论。
我还没有看到需要多个css文件(除了通过条件注释解决的几个IE6更正)。
答案 2 :(得分:0)
如果可能的话。既然旧的Netscape,IE< = 6等不再使用那么多,我尝试使用适用于所有浏览器的功能(例如FF> = 2,IE> = 7,Chrome,Opera )。
答案 3 :(得分:0)
Conditional comments似乎是常态。结合一些JavaScript,如Dean Edward's ie7.js,您可以缓解大多数跨浏览器问题,而无需在CSS文件中使用黑客攻击。
答案 4 :(得分:0)
最好为Internet Explorer 6-7使用不同的css文件(通过conditional comments包含它们),以及其他浏览器的黑客攻击。
答案 5 :(得分:0)
一种跟进是如何开发有效的单个文件。
我看到的最好的方法是从零开始,慢慢构建它并通过更改检查更改,它仍然与您的核心浏览器兼容(尤其是有问题的浏览器)。
当你完全使用一个浏览器然后说“转换它的时间”时,痛苦真的开始了,你必须开始黑客攻击。
答案 6 :(得分:0)
My approach使用PHP类检测操作系统,浏览器和浏览器版本。您可以在任何操作系统上定位几乎任何浏览器的任何版本。