Strict vs Hacky CSS - 哪个更好

时间:2011-01-20 06:57:42

标签: css standards-compliance css-hack

使用css并不需要很长时间才会发现某些事情不是跨浏览器友好的。

例如,当我想要一个半透明的png时,我不得不给IE一些荒谬的东西,如:filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(...);

我在定位和伪选择器等方面遇到了问题,因为任何玩过css超过20分钟的人都会遇到。

  • 为了解决问题,我有时会开始决定我只会以相同(或至少相当类似)的方式支持和支持所有浏览器。
  • 其他时候我只是在条件评论中浏览并给IE它自己的样式表。
  • 然后在其他场合我只是使用css hacks来排除某些浏览器读取特定位(例如旧的“* html {}”或“html>/**/body {}”)

所以我的问题是,这是最好的选择。第一个是非常有限的,你最终开发IE6能够做的,但其他两个感觉有点肮脏。那么在编程实践,渲染效率等方面的赌注是什么?

2 个答案:

答案 0 :(得分:1)

我总是喜欢IE修正的条件评论。黑客与修复解析的IE不一致,所以黑客不再工作,但后来没有修复黑客正在补偿的东西。此外,他们可能会混淆其他CSS解析器。

答案 1 :(得分:1)

简短回答:

  • 尽力遵守标准
  • 有创意
  • 停止使用黑客并开始使用条件评论

从长远来看,CSS hacks只会污染你的样式表并使它们更难维护。尽可能避免使用它们,而是使用特定于IE的样式表的条件注释(因为大多数黑客都适合IE)。我可以保证,如果笨拙的话,CC比黑客更糟糕。

您不必一直受到IE的限制。有一个名为渐进增强的概念,这意味着您可以在支持高级样式的现代浏览器中使您的页面看起来更漂亮,等等。使用像border-radius这样的CSS3属性没有任何问题,因为浏览器供应商正在(相对)快速地为这些产品提供支持。

但是有客户,这将是一个不同的讨论主题。但是,我会说,取得平衡:教育你的客户并发挥创造力,但不要试图做任何太聪明或幻想的事情。还有,请尽量避免使用CSS黑客攻击,除非它早上4点半就过去了,而且你可以在喝完啤酒后想要在任何情况下完成任务。