Css IE6/IE7和透明背景bug-对于所有这些bug,什么是实用的修复方法?

Css IE6/IE7和透明背景bug-对于所有这些bug,什么是实用的修复方法?,css,internet-explorer-6,internet-explorer-7,Css,Internet Explorer 6,Internet Explorer 7,在IE6/IE7中,当有透明背景应用于相关元素时,我会遇到一些奇怪的渲染问题 它们包括但不限于: 当向上滚动页面时,背景图像会移动,就像应用了填充一样 将鼠标悬停在链接上时,应用于其包含div的背景图像似乎消失 使用下拉菜单时,将鼠标悬停在下拉菜单的包含元素上会关闭鼠标,并调用鼠标退出事件 这些只是我到目前为止必须修复的7个问题中的2个,正如您所看到的,它们没有链接,调试起来很痛苦,我相信在这个项目结束之前,我还会遇到更多问题 为了停止,我修改了一个默认CSS规则,该规则将几乎所有元素都设置

在IE6/IE7中,当有透明背景应用于相关元素时,我会遇到一些奇怪的渲染问题

它们包括但不限于:

  • 当向上滚动页面时,背景图像会移动,就像应用了填充一样
  • 将鼠标悬停在链接上时,应用于其包含div的背景图像似乎消失
  • 使用下拉菜单时,将鼠标悬停在下拉菜单的包含元素上会关闭鼠标,并调用鼠标退出事件
这些只是我到目前为止必须修复的7个问题中的2个,正如您所看到的,它们没有链接,调试起来很痛苦,我相信在这个项目结束之前,我还会遇到更多问题

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

旧的:

新的:

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

我的忧虑是否合理?若然,如何纠正?或者我只是无忧无虑,这是解决如此愚蠢问题的合适方法

tl;dr-元素上的透明背景(图像)会因IE中的解释方式而导致问题。这不是图像渲染问题这是IE逻辑故障问题

提前感谢。

IE6(可能还有IE7,我不确定)有一些奇怪的透明度问题

查看我一直使用的修复程序-只需添加一点javascript并将任何GIF转换为png

IE6(可能还有IE7,我不确定)有一些奇怪的透明度问题


查看我一直使用的修复程序-只需添加一点javascript并将任何GIF转换为png

这取决于事情的规模,真正决定了它对服务器负载的影响程度。理想情况下,如果您计划将此部署规模扩大,您应该已经在使用最合适的标准方法来处理静态内容:缓存头、静态内容的独立(子)域、反向代理、CDN部署等


在CSS方面,你要么使用Javascript或间隔图像等恶意攻击来绕过IE6/7,要么限制你使用页面样式的方式,使这些问题不存在,因为你没有使用导致这些问题的东西。这真的取决于你觉得什么更重要。

取决于事情的规模确实决定了它对服务器负载的影响程度。理想情况下,如果您计划将此部署规模扩大,您应该已经在使用最合适的标准方法来处理静态内容:缓存头、静态内容的独立(子)域、反向代理、CDN部署等


在CSS方面,你要么使用Javascript或间隔图像等恶意攻击来绕过IE6/7,要么限制你使用页面样式的方式,使这些问题不存在,因为你没有使用导致这些问题的东西。这真的取决于你觉得什么更重要。

我使用这个css技术为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 */
背景图像:url(/images/sprites/icons-sprite.png);

_背景图像:url(/images/sprite/icons-sprite.gif);/*IE我使用这个css技巧为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 */
背景图像:url(/images/sprites/icons-sprite.png);

_背景图像:url(/images/sprite/icons-sprite.gif);/*看看这篇文章:PNG8-
你需要烟花来修复这个问题。自从我发现了这种文字,我就一直在使用它。主要优点:不同的浏览器不需要不同的图像。PNG8对所有人都有好处。

看看这篇文章:PNG8-
你需要烟花来修复这个问题。自从我发现了这种文字,我就一直在使用它。主要优点:不同的浏览器不需要不同的图像。PNG8对所有人都有好处。

浏览器只会下载一次spacer.gif资源,然后将其缓存,因此加载性能没有问题。浏览器只会下载一次spacer.gif资源,然后将其缓存,因此加载性能没有问题。
background-image:url(/images/sprites/icons-sprite.png);
_background-image:url(/images/sprites/icons-sprite.gif); /* IE<7 gets the crappy icons */