软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > Web前端 > 工具与技巧 > IE8 滤镜(filter:alpha)与png透明失效的问题

IE8 滤镜(filter:alpha)与png透明失效的问题

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”。 

此问题解决方法:IE8无法显示png图片的问题分析与解决方法 文中讲到了多处注册表影响ie8 的png效果,列举了几种可能导致png注册表选项被破坏的情形。

当PNG遭遇filter:alpha

IE系列的PNG问题是一个广受诟病、由来已久、至今未较好解决的问题,从IE6的不支持到IE7/8的缺陷支持,算是有所进步,但还有很多不健全。比如大家可以试试当PNG遭遇filter:alpha的情况,PNG直接变黑底了,真黑!在论坛碰到的例子:

问题:非常奇怪的问题,PNG在IE7下出现黑色背景

遇到一个很郁闷很奇怪的问题,我的PNG图片在FF下能透明。但在IE7下却有了一个黑色的背景。

不能添加附件了,郁闷。不知道我有没有描述清楚。

一开始GG了下,以为是pngfilt.dll文件损坏了。于是下载了新的替换掉。没用。
后又把IE升级到IE8。仍是无效。

解答:

应该是给整个窗体设置了透明度,那么对于 IE7(可能还包括 IE8)来说,它虽然提供了对半透明 PNG 的支持,但这种支持是不健全的。这种不健全的一种表现就是,当你为半透明 PNG 图片(或使用半透明 PNG 作为背景的元素)设置透明度时,PNG 图片的半透明部分会显示为黑色(但不透明部分的显示是正常的)。

值得一提的是,IE 实现透明度是通过其私有的 CSS 滤镜的方式,而非标准的 CSS3 属性。而且 IE 透明滤镜本身就是存在 bug 的,当然这里就不多说了。

当你对浏览器没有要求的时候,IE 看起来似乎还不错。

    相关阅读
    网友评论
    栏目导航
    推荐软件