Zao's Blog
感谢上天,我不是一个人在战斗!
九月
19

今天用IE6看了一下我的blog,发现文章标题的的背景图像有点怪。本来是从左到右逐渐透明的,在我平时用的IE7下表现得很完美。而这次却发现在IE6下是过渡到白色的!显然是将本来透明的地方用白色代替了。我看了背景图像的属性,发现是png格式的,方记得IE6并不支持png图像透明。难道就没有办法了吗?

网上搜索得知还是有办法让IE6支持png图像的!虽然有让IE6支持PNG透明背景的JS程序,但都不是很方便,还是用CSS来实现的好。使用到的就是:
IE5.5+的AlphaImageLoader滤镜

语法:
filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )
属性:
enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false
      true : 默认值。滤镜激活。
      false : 滤镜被禁止。

sizingMethod : 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。
crop : 剪切图片以适应对象尺寸。
      image : 默认值。增大或减小对象的尺寸边界以适应图片的尺寸。
      scale : 缩放图片以适应对象的尺寸边界。
src : 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。
说明:
在对象容器边界内,在对象的背景和内容之间显示一张图片。并提供对此图片的剪切和改变尺寸的操作。如果载入的是PNG(Portable Network Graphics)格式,则0%-100%的透明度也被提供。
PNG(Portable Network Graphics)格式的图片的透明度不妨碍你选择文本。也就是说,你可以选择显示在PNG(Portable Network Graphics)格式的图片完全透明区域后面的内容。

另外需要注意的是:

  1. 该滤镜中的src属性最好取绝对路径,如果取相对路径的话必须是相对于当前网页路径,而不是我们习惯的“相对于css的路径”!
  2. AlphaImageLoader滤镜会导致该区域的链接和按钮无效,解决的办法是为链接或按钮添加:position: relative;这样条代码,使其相对浮动。
  3. 为了使滤镜起作用,应该为容器设置宽度和高度值。
  4. 由于IE7是支持png透明的,所以为了页面执行速度,可以让该css规则对IE7不起作用。为了达到这个目的,完全可以使用 * html 来屏蔽IE7

详情见让IE6支持PNG图像透明的底层原理

由于AlphaImageLoader滤镜仅兼容IE5.5以上,所以我想用!important来屏蔽IE5.5以下的浏览器,但发现并不能实现。原来ie6在一个class类里定义一个样式的 !important优先级是无效的(即还是按最后一个定义的样式表现),如果把它放在不同的类里定义优先级,则!important有效!所以还是算了,反正用IE5.5以下的人都没有几个了吧^_^人应该与时俱进!下面发张图让大家测试一下你的浏览器是否支持png图像透明,图片的背景色就是透明的。但是如果您看到的是一张背景有底色的正方形图片,那么您的浏览器就没有支持透明PNG的显示,还是换IE7、Opera或者Firefox吧。
png透明测试图

发表评论





改变评论框高度:增大(+) | 减小(-)