IE8中使用filter滤镜对PNG图片进行透明处理无效的解决方法

原文:IE8半透明滤镜(filter:alpha)失效、png半透明失效的解决办法

IE8中类似 filter:alpha(opacity=50) 这样的CSS规则不能出现预期的半透明效果。

关于filter这个IE属性,写法大概是这样的:

  • IE8:-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
  • IE7:filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);
  • IE6:filter:alpha(opacity=50)

解决方法:

  1. 首先检查浏览器是否开启了ActiveX
  2. PNG文件类型在浏览器没有扩展值或数值错误
    • 开始->运行-regedit,打开注册表,查看 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\EmbedExtnToClsidMappings\ 下存在.png项么。
    • 如果.png不存在,选择上一级EmbedExtnToClsidMappings,右键新建项,项目名称输入.png,然后点.PNG,双击默认值,在数值数据那粘贴clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B
  3. 系统中的文件损坏
    • 开始->运行-regsvr32 c:\windows\system32\pngfilt.dll 如果出现

已加载 x:\windows\system32\pngfilt.dll,但没有找到DllRegisterSever输入点。无法注册这个文件。

则表明这个文件可能损坏了,需要到别的机器上复制一份新的pngfilt.dll。 然后再次运行regsvr32 c:\windows\system32\pngfilt.dll

  1. QuickTime程序干扰注册表
    • 开始->运行->regedit,启动注册表,找到HKEY_CLASSES_ROOT\MIME\Database\Content Type 将其中中文名的以及乱码的都删除即可。
  2. 注册表信息错误
    • 将下面的内容存成.reg文件,然后右键->合并