IE6 PNG-transparency CSS黑客无法正常工作

时间:2010-05-25 18:44:53

标签: css png internet-explorer-6

我环顾四周,决定使用CSS方法,而不是依靠JS ...我认为那些坚持使用IE6的企业用户可能也会被IT部门禁用JS。

所以在我的HTML中我有:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>My Page</title>
<link rel="stylesheet" type="text/css" href="default.css" />
<!--[if IE 6]><link rel="stylesheet" type="text/css" href="ie6.css"><![endif]-->
</head>

<body>
    <img src="media/logo.png"/>
</body>

然后我的ie6.css只包含:

img
{
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(...);
}

然而,这一切都没有任何影响,没有透明度。我评论了页面的所有其余部分,所以它确实是一个,但仍然没有运气。我删除了default.css样式表但仍然没有区别。

修改: 我现在使用.htc方法工作,将该文件加载到条件IE6测试块中。原来我遇到的问题是Windows 7已经“锁定”了文件(我甚至不知道这意味着什么),这阻止了IE加载/使用它。

4 个答案:

答案 0 :(得分:3)

如果我没弄错的话,你必须使用

progid:DXImageTransform.Microsoft.AlphaImageLoader(src='yourimage.png')

对于每张图片,你不能让它只适用于所有图像。

答案 1 :(得分:1)

我正在使用以下页面的解决方案:IE PNG support
按照在线演示online demonstration一步一步,您的png也将在IE中透明。

答案 2 :(得分:1)

在HTML页面中,您有media/logo.png中相对于HTML文件(default.css)的图像路径,您的条目为behavior: url(iepngfix.htc);(iepngfix.htc的路径)相对于HTML文件而言,在ie6.css中,您有一个filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='media/logo.png', sizingMethod='scale');条目,其中包含相对于CSS文件的图像路径。至少你需要改变iepngfix.htc(IEPNGFix.blankImg = 'media/blank.gif';

中的路径

您需要具有以下文件夹结构:

  • HTML文件
  • iepngfix.htc
  • ie6.css
  • default.css
  • /media/logo.png
  • /media/blank.gif

答案 3 :(得分:0)

您可能想看看http://www.dillerdesign.com/experiment/DD_belatedPNG/

它还允许您使用带有CSS background-position属性的alpha通道的png,当使用AlphaImageLoader时通常不会这样做。