1

在使用 css 时很快就会意识到某些东西不是跨浏览器友好的。

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

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

  • 为了解决问题,有时我开始决定只做所有浏览器都以相同(或至少相当相似)的方式支持和支持的事情。
  • 其他时候我只是加入条件注释并给 IE 自己的样式表。
  • 然后在其他情况下,我只是使用 css hack 来排除某些浏览器读取特定位(如旧的“ * html {}”或“ html>/**/body {}”)

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

4

2 回答 2

1

简短的回答:

  • 尽最大努力遵守标准
  • 有创意
  • 停止使用 hacks 并开始使用条件注释

从长远来看,CSS hack 只会污染您的样式表并使其更难维护。尽可能避免使用它们,而是使用带有 IE 特定样式表的条件注释(因为大多数 hack 都迎合 IE)。我可以保证 CC 比 hack 更脏,如果有的话。

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

但是还有客户,这将是一个不同的讨论主题。不过,我想说的是,要取得平衡:教育你的客户并发挥创造力,但不要试图做任何太聪明或太花哨的事情。并且请避免使用 CSS hack,除非是凌晨 4 点半,并且您在喝完啤酒后喝了罐头,只是想在任何情况下完成一些事情。

于 2011-01-20T07:04:42.923 回答
1

我总是更喜欢带有 IE 修复的条件注释。hack 与 IE 修复解析不一致,因此 hack 不再起作用,但没有修复 hack 正在补偿的东西。此外,它们可能会与其他 CSS 解析器混淆。

于 2011-01-20T07:01:40.187 回答