IE8的有些特性,往往因为一些神秘的不明原因而导致失效。 昨又碰见了俩。其实这个也不是昨碰见的,好长一段时间了,只是一直没花时间去解决它,到昨儿才去寻医问药。 症状是这样的,在我的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下出现黑色背景)。 |
|