分享

IE8半透明滤镜(filter:alpha)失效、png半透明失效的症状与治疗偏方

 看见就非常 2014-07-02


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,7,8里都可以这样写 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的某些动作有关,仅仅只是怀疑而已。

这回运气比较好一点,在茫茫网海搜到了一个偏方,按偏方所指,改了改注册表,就解决了问题。

开始->运行-regedit,打开注册表,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\EmbedExtnToClsidMappings\ 看.png存不存在。如果.png不存在,鼠标点它的上一层,也就是EmbedExtnToClsidMappings,然后按鼠标右键新建项,输入.png,然后点.PNG,双击默认值,在数值数据那粘贴“clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B”。

这个偏方的网址是 http://hi.baidu.com/sofay/blog/item/0e8ade549cb24b50d00906ca.html (俺的IE8无法显示png图片!),文中那位兄台讲到了多处注册表影响ie8 的png效果,列举了几种可能导致png注册表选项被破坏的情形。

 

当PNG遭遇filter:alpha 

IE系列的PNG问题是一个广受诟病、由来已久、至今未较好解决的问题,从IE6的不支持到IE7/8的缺陷支持,算是有所进步,但还有很多不健全。比如大家可以试试当PNG遭遇filter:alpha的情况,PNG直接变黑底了,真黑!可以看蓝色经典上面的这一篇 http://bbs./thread-2925490-1-1.html (非常奇怪的问题,PNG在IE7下出现黑色背景)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多