IE6 / IE7和透明背景错误 - 所有这些错误的实用修复是什么?

时间:2009-09-23 11:10:10

标签: css internet-explorer-6 internet-explorer-7

当有相关元素应用透明背景时,我在IE6 / IE7中遇到了许多奇怪的渲染问题。

他们包括但不限于:

  • 向上滚动页面时,背景图像会移动,就像应用了填充一样。
  • 当鼠标悬停在链接上时,应用于其包含div的背景图像似乎消失。
  • 使用下拉列表时,将鼠标悬停在下拉列表的包含元素上会调用鼠标移出事件。

这些只是迄今为止我必须修复的7个中的2个,因为你可以看到它们没有链接并且很难调试,我相信在项目结束之前我会遇到更多的内容。

要停止我修改了一个默认的CSS规则,该规则几乎将所有元素设置为默认图像“spacer.gif” - 1KB 1x1透明图像。

旧:

background: transparent;

新:

background: url('../images/spacer.gif');

但是我现在担心服务器和客户端计算机上可能产生的开销。例如,当滚动浏览页面时,从“哑”浏览器下载每个元素的spacer.gif和客户端的CPU命中,因为它必须渲染其他图像,从而增加了加载时间(以及服务器上的负载)。

我的担忧是否合理,如果可以,他们如何才能得到纠正?或者我只是担心什么都没有,这是对这样一个愚蠢问题的适当解决方法??

tl; dr - 元素上的透明背景( 图像)会导致在IE中解释它们的方式引起的问题。 这不是图像问题的渲染这是一个IE逻辑失败的问题。

提前致谢。

4 个答案:

答案 0 :(得分:3)

我使用这个css hack来提供IE< 7一个gif文件和其他一切24位png透明。

background-image:url(/images/sprites/icons-sprite.png);
_background-image:url(/images/sprites/icons-sprite.gif); /* IE<7 gets the crappy icons */

IE 6支持gif透明度。

答案 1 :(得分:1)

根据事物的规模确定它会对服务器负载产生多大影响。理想情况下,如果您计划将其作为一个非常大的部署,那么您应该已经采用最合适的标准方法来处理静态内容:缓存标头,静态内容的单独(子)域,反向代理,CDN部署等。

就CSS而言,你要么有像Javascript或间隔图像这样讨厌的黑客来绕过IE6 / 7,要么限制你使用你的页面样式的方式,以便这些问题不存在,因为你没有使用导致他们的事情。这实际上取决于你认为更重要的东西。

答案 2 :(得分:0)

IE 6(可能是IE7,我不确定)有一些奇怪的透明度问题。

查看http://homepage.ntlworld.com/bobosola/index.htm以获取我一直使用的修复程序 - 只需添加一些javascript并将您拥有的任何GIF转换为png。

答案 3 :(得分:0)

看看这篇文章:PNG8 - The Clear Winner 您需要Fireworks才能修复此问题。自从我发现这篇文章以来,我一直都在使用它。主要优点:您不需要为不同的浏览器使用不同的图像。 PNG8对所有人都有好处。