`
chinachuner
  • 浏览: 64721 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

最新版的IE8添加了一些新特性,但是往往因为某些未知的因素而导致这些新特性失效。昨天就遇到这么一个奇怪的问题,网页中的PNG图片在FF下能显示半透明,但在IE7下却有了一个黑色的背景,一开始以为是pngfilt.dll文件损坏了,于是去其他电脑找到这个文体复制过来替换掉,还是没有作用。后来在IE8浏览器中打开,还是跟IE7是现实同样的效果。

 

导致IE7跟IE8中透明效果出现问题有可能是filter:alpha失效导致

症状是这样的,在我的IE8,类似filter:alpha(opacity=35)这样的CSS代码并不能出现预期的半透明效果了,很是纳闷。

在茫茫网海也没有搜到对症的偏方。

话说IE的滤镜是个神奇的东西,写法也是变来变去。

IE8里可以这样写 -ms-filter:”progid:DXImageTransform.Microsoft.Alpha(opacity=50)”;

IE7里可以这样写 filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);

IE6,IE7,IE8里都可以这样写 filter:alpha(opacity=50)

最后一种是我比较倾向的,因为简短,我看着一堆progid:DXImageTransform.Microsoft就烦。

前两种写法,很明显的是和MS的ActiveX技术一条路的,第三种看起来没有ActiveX,但本质也还是ActiveX一路的,不信你在安全选项里面禁掉所有的ActiveX试试,包括这个滤镜在内的所有IE滤镜立刻就光荣牺牲了。

今次碰到的filter:alpha失效,我检查了ActiveX是开着的,而且Flash都可以播放的,最后还是在安全选项里面七设八设了一通就可以了(直接降低安全级别到最低也可以),但是我也没弄清楚到底是哪一个或者哪几个选项跟它相关。

还是{opacity:0.5}好啊,IE啥时候支持噢。

png半透明失效的原因

IE7,IE8都是直接支持了png图片的alpha的,这回我的IE8里的png半透明失效的原因不明,怀疑可能跟360Safe的某些动作有关,仅仅只是怀疑而已。

很多情况会影响到ie8的png效果,这回运气比较好一点,在网上找到了方法,改了改注册表,就解决了问题。这里我们列举几种可能导致png注册表选项被破坏的情形。

1.(原因:.png在浏览器没有扩展值或出错)
开始->运行-regedit,打开注册表,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\EmbedExtnToClsidMappings\看.png存不存在。如果.png不存在,鼠标点它的上一层,也就是EmbedExtnToClsidMappings,然后按鼠标右键新建项,输入.png,然后点.PNG,双击默认值,在数值数据那粘贴“clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B”。
这是我上次成功的方法,这次不行了!

2.(原因:.png在系统中的文件损坏)
使用 开始->运行,输入 “regsvr32 c:\windows\system32\pngfilt.dll”
如果在注册时出现 “已加载 c:\windows\system32\pngfilt.dll,但没有找到DllRegisterSever 输入点。无法注册这个文件”,则表明这个文件可能损坏了,你要去别的机子去Copy一个好的过来覆盖。再进行一次注册。

3.(原因:我们伟大的Apple公司的QuickTime程序干扰了注册表)
开始->运行->regedit,启动注册表,找到HKEY_CLASSES_ROOT\MIME\Database\Content Type
将其中中文名的以及乱码的都删除即可如[视频/mp4]。

4.(原因:注册表信息错误!我这次就是这个问题,合并注册表后,下面的信息会自动覆盖掉有问题的信息)
将下面的内容存成.reg文件,然后右键->合并。

Windows Registry Editor Version 5.00

;PNG file association fix for Windows XP
;Created on May 17, 2007 by Ramesh Srinivasan

[HKEY_CLASSES_ROOT\.PNG]
“PerceivedType”=”image”
@=”pngfile”
“Content Type”=”image/png”

[HKEY_CLASSES_ROOT\.PNG\PersistentHandler]
@=”{098f2470-bae0-11cd-b579-08002b30bfeb}”

[HKEY_CLASSES_ROOT\pngfile]
@=”PNG Image”
“EditFlags”=dword:00010000
“FriendlyTypeName”=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,\
00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
32,00,5c,00,73,00,68,00,69,00,6d,00,67,00,76,00,77,00,2e,00,64,00,6c,00,6c,\
00,2c,00,2d,00,33,00,30,00,35,00,00,00
“ImageOptionFlags”=dword:00000003

[HKEY_CLASSES_ROOT\pngfile\CLSID]
@=”{25336920-03F9-11cf-8FD0-00AA00686F13}”

[HKEY_CLASSES_ROOT\pngfile\DefaultIcon]
@=”shimgvw.dll,2″

[HKEY_CLASSES_ROOT\pngfile\shell]
@=”open”

[HKEY_CLASSES_ROOT\pngfile\shell\open]
“MuiVerb”=”@shimgvw.dll,-550″

[HKEY_CLASSES_ROOT\pngfile\shell\open\command]
@=”rundll32.exe C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_Fullscreen %1″

[HKEY_CLASSES_ROOT\pngfile\shell\open\DropTarget]
“Clsid”=”{E84FDA7C-1D6A-45F6-B725-CB260C236066}”

[HKEY_CLASSES_ROOT\pngfile\shell\printto]

[HKEY_CLASSES_ROOT\pngfile\shell\printto\command]
@=”rundll32.exe C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_PrintTo /pt \”%1\” \”%2\” \”%3\” \”%4\”"

[HKEY_CLASSES_ROOT\SystemFileAssociations\.PNG]
“ImageOptionFlags”=dword:00000003

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.PNG]

[-HKEY_CLASSES_ROOT\Mime\Database\Content Type\image/x-png]

[-HKEY_CLASSES_ROOT\Mime\Database\Content Type\image/png]

[HKEY_CLASSES_ROOT\Mime\Database\Content Type\image/x-png]
“Extension”=”.png”
“Image Filter CLSID”=”{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}”

[HKEY_CLASSES_ROOT\Mime\Database\Content Type\image/x-png\Bits]
“0″=hex:08,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,89,50,4e,47,0d,0a,1a,0a

[HKEY_CLASSES_ROOT\Mime\Database\Content Type\image/png]
“Extension”=”.png”
“Image Filter CLSID”=”{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}”

[HKEY_CLASSES_ROOT\Mime\Database\Content Type\image/png\Bits]
“0″=hex:08,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,89,50,4e,47,0d,0a,1a,0a

[HKEY_CLASSES_ROOT\CLSID\{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}]
@=”CoPNGFilter Class”

[HKEY_CLASSES_ROOT\CLSID\{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}\InProcServer32]
@=”C:\\WINDOWS\\system32\\pngfilt.dll”
“ThreadingModel”=”Both”

[HKEY_CLASSES_ROOT\CLSID\{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}\ProgID]
@=”PNGFilter.CoPNGFilter.1″

[HKEY_CLASSES_ROOT\PNGFilter.CoPNGFilter]
@=”CoPNGFilter Class”

[HKEY_CLASSES_ROOT\PNGFilter.CoPNGFilter\CLSID]
@=”{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}”

[HKEY_CLASSES_ROOT\PNGFilter.CoPNGFilter.1]
@=”CoPNGFilter Class”

[HKEY_CLASSES_ROOT\PNGFilter.CoPNGFilter.1\CLSID]
@=”{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}”

当PNG遭遇filter:alpha

IE系列的PNG问题是一个广受诟病、由来已久、至今未较好解决的问题,从IE6的不支持到IE7/8的缺陷支持,算是有所进步,但还有很多不健全。比如大家可以试试当PNG遭遇filter:alpha的情况,非常奇怪的现象,PNG在IE7下出现黑色背景。

这个在蓝色经典上有朋友说明了该问题,“出现背景变黑应该是给整个窗体设置了透明度导致,那么对于IE7(可能还包括IE8)来说,它虽然提供了对半透明PNG的支持,但这种支持是不健全的。这种不健全的一种表现就是,当你为半透明PNG图片(或使用半透明PNG作为背景的元素)设置透明度时,PNG图片的半透明部分会显示为黑色(但不透明部分的显示是正常的)。
值得一提的是,IE 实现透明度是通过其私有的 CSS 滤镜的方式,而非标准的 CSS3 属性。而且IE透明滤镜本身就是存在 bug 的,当然这里就不多说了”

分享到:
评论

相关推荐

    IE8 滤镜效果filter:alpha(opacity=20);IE下失效出现黑色

    坐一个滤镜效果,CSS样式... /* IE 8 */ filter:alpha(opacity=20); /* Firefox,Safari(WebKit),Opera */ -ms-filter:alpha(opacity=20); /* IE 4-7 */ zoom:1; /* set “zoom”,”width” or “height” to trigger

    css中filter:alpha透明度使用小结兼容IE、火狐

    CSS中filter:alpha透明度的使用方法与兼容性问题,主要涉及到不同浏览器对透明度属性的支持差异,特别是IE浏览器与Firefox浏览器之间的兼容性问题。以下是对这一知识点的详细介绍: 首先,CSS中的filter属性是一个...

    IE6不兼容png透明背景解决方法

    它只支持PNG-8的透明效果,而对于PNG-24,浏览器会将其透明度信息解释为一个灰色半透明层,导致了所谓的“灰色背景”问题。这在需要精细透明效果或者多级透明渐变的设计中尤为明显。 解决这个问题的方法主要有以下...

    IE6下完美解决png图片半透明问题

    标题"IE6下完美解决png图片半透明问题"所指的,就是针对这个特定的IE6浏览器与PNG图像的兼容性问题,寻找并应用一种方法来实现PNG图像在IE6中的正常显示,包括其半透明特性。解决这个问题通常涉及到CSS滤镜(Filter...

    IE6_PNG透明终极解决办法

    标题中的“IE6_PNG透明终极解决办法”指的是在Internet Explorer 6(简称IE6)浏览器中处理PNG图片透明度的问题。PNG格式的图片支持Alpha透明通道,允许半透明效果,但在IE6这个古老的浏览器中,对PNG8和PNG24格式的...

    完美解决IE6下png透明

    在早期的网页设计中,IE6(Internet Explorer 6)作为主流浏览器,其对PNG(Portable Network Graphics)图像格式的支持存在显著的问题,尤其是对于PNG-24格式的图像,它无法正确显示背景透明或者半透明效果。...

    ie 下png 透明图片 兼容解决方案

    1. **CSS滤镜法**:利用CSS滤镜(Filter)属性,我们可以让IE6支持PNG24的透明。例如: ```css .pngFix { behavior: url(iepngfix.htc); /* 需要一个名为iepngfix.htc的HTC文件 */ filter: progid:...

    IE6png透明JS

    总的来说,“IE6png透明JS”是针对IE6浏览器PNG透明问题的一种技术解决方案,它利用JavaScript库和CSS滤镜来模拟或修复透明效果。随着浏览器更新换代,这个问题逐渐被解决,但对于仍然需要支持IE6的开发者来说,这些...

    div背景半透明,覆盖整个可视区域的遮罩层效果

    1 、半透明效果可以使用 css3 中的 opacity 属性,在低版本的IE浏览器中使用IE的alpha 滤镜。代码: .opacity{ opacity:0.3; filter: alpha(opacity=30); background-color:#000; } 2 、要覆盖整个可视区域通常的...

    ie6 png 透明度 解决方法

    PNG是一种优秀的图像格式,尤其适用于需要半透明效果的设计,但IE6只支持8位的PNG图像,而不支持带有alpha通道的24位PNG图像,导致了透明或半透明部分显示为黑色或不透明。这个问题让许多设计师和开发者头痛不已。...

    css 半透明 让IE6支持png图片半透明解决方法

    解决方法: ①用PNG8格式图片替代PNG24格式的图片 用fireworks导出Alpha模式的PNG8格式的图片,Alpha模式的PNG8格式图片支持半透明,在IE6下全透明以及半透明部分会显示成全透明,并且会存在锯齿。如果对用户体验...

    IE 6 下PNG图片实现透明

    IE6只部分支持PNG-8格式,而不支持PNG-24格式的半透明或Alpha透明。PNG-8最多只能有256种颜色,并且不支持Alpha通道,这意味着它不能实现平滑的透明过渡。而PNG-24则可以显示更多的颜色并具有Alpha通道,能够实现...

    IE低版本支持png透明问题

    除了技术解决方案,还可以在设计阶段避免使用透明PNG,或者使用其他技术来模拟透明效果,比如使用CSS3的`opacity`属性(IE8及以上版本支持)或者使用渐变背景来替代半透明效果。 在提供的压缩包中,`IE6背景半透明...

    PNG图像支持IE678火狐透明的解决办法

    PNG图像在现代网页设计中广泛使用,特别是在需要半透明效果或者高质量无损图像时。然而,对于较老的浏览器,如Internet Explorer 6、7和8(简称IE678),以及早期版本的Firefox,PNG图像的透明特性可能无法正确显示...

    ie6png透明解决

    PNG(Portable Network Graphics)是一种支持透明度的图像格式,但在微软的IE6浏览器中,PNG-24格式的图片无法实现半透明效果,而PNG-8虽然支持透明,但色彩表现力有限。这个问题让许多开发者头疼,因为它影响了网站...

    web透明技巧-IE中的png图片透明

    然而,IE6及更早版本并不完全支持PNG-8和PNG-24的阿尔法通道,导致在这些浏览器中显示PNG图片时可能会出现不透明或错误的透明效果。 为了在IE中实现PNG图片的透明,我们可以采用CSS滤镜(Filter)技术。滤镜是IE...

    ie6中png透明解决方案 js

    由于IE6不支持PNG-24格式的 Alpha 透明通道,导致图片背景出现黑色或者半透明遮罩。为了解决这个问题,开发者们采取了一些JavaScript技巧来实现IE6下的PNG透明效果。本压缩包提供的"ie6中png透明解决方案 js"正是...

    png在ie6下半透明js修正

    总的来说,"png在ie6下半透明js修正"这个主题涉及到了前端开发中的浏览器兼容性问题,尤其是如何通过JavaScript和CSS滤镜技术来解决IE6对PNG半透明支持的不足。理解并掌握这种方法对于进行跨浏览器的Web开发是非常...

Global site tag (gtag.js) - Google Analytics