PNG 图片在网站设计中是不可或缺的部分,最大的特点应该在于 PNG 可以无损压缩,而且还可以设置透明,对于增强网站的图片色彩效果有重要的作用。

但为什么 PNG 图片却没有 GIF 和 JPG 图片的使用来得广泛呢,这个祸因应归属于微软的 IE 浏览器(Firefox 和 Opera 对 PNG 支持的比较好,而现在浏览器的主流IE6 却无法很好的支持)。不过微软在最近也开始改过自新了,新出的的 IE7 可以很好的支持 PNG,可以想象在未来的网络世界,PNG 图片的重要性将会更加凸显。

但在大家还在绝大多数的使用 IE6 的时候,我们又怎样在 IE6 的世界去完美使用 PNG 图片呢(PNG 图片的时候最重要的地方在于 PNG 透明背景图片的运用)。我们应该庆幸我们是幸福的!IE5.5+ 的 AlphaImageLoader 滤镜为通向 png 提供了一个道路,如果他载入的是 PNG(Portable Network Graphics) 格式,则 0%-100% 的透明度也被提供。但 IE5.0 无法支持属性,那只有完全绝望了,不过绝望的只是几个,得到是绝大数,我们应该知足,知足才会常乐。

现在我们将通过 Hack 和 AlphaImageLoader 滤镜来实现 IE6 下的 PNG 透明背景图片,不过由于 filter 的使用存在一定的性能问题,所以尽量少用。

先熟悉下滤镜的语法:

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 地址指定背景图像。假如忽略此参数,滤镜将不会作用。

Firefox、Opera、IE7 等完全支持 PNG 透明图片的浏览器,而 IE6 不能很好识别,所有我们可以通过这来定义Firefox、Opera、IE7 等浏览器中 PNG 图片的样式。如下

#png {background: url(绝对路径/images/bg.png) repeat;}

而对于 IE6,我们都通过滤镜的方法来定义。我们通过只有 IE6 才识别的下划线(_),来定义 IE6 浏览器中的滤镜。如下:

#png {
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizinMethod='scale', src="绝对路径/images/bg.png");
_background:none;
}

这样综合起来的最后方法就是:

#png {
background: url(绝对路径/images/bg.png) repeat;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='scale', src="绝对路径/images/bg.png");
_background:none;
}

不过需要注意的一个地方:

使用 AlphaImageLoader 后该区域的超链接和按钮会失效,解决的方法:对链接或按钮直接设置相对位置,让它们浮动于滤镜区域的上面。

参考文献:http://support.microsoft.com/kb/294714/zh-cn

共有4 条评论

  1. 1. 我的头像最帅! 天空

    真棒,早在这发现就好了,当初因为用AlphaImageLoader 后该区域的超链接和按钮会失效浪费了好久的时间。

  2. 2. 我的头像最帅! 天空

    想请问一下,我需要这个png做背景图片,我怎末在滤镜中控制他的位置呢?

  3. 3. 我的头像最帅! 怿飞

    @天空 使用滤镜无法模拟背景图片的控制位置

  4. 4. 我的头像最帅! 东捣

    多谢博主,今天你这篇文章帮了我个大忙了!

    不过url和src不一定要求绝对路径吧?
    url可以写样式表所在位置的相对路径 不过src那个地方就一定要用页面所在位置的相对路径。

发表评论

(必填)

(必填,会为您保密)

评论仅支持“a、abbr、strong、em、blockquote、code”几个简单的标签