PNG图片作为网页图的一个好处是它允许有透明背景,这一点比gif格式做得要好,但也有不如意的地方,就是在FireFox上PNG的透明背景显示得很好,但是在IE中就做不到了,这就需要滤镜技术的帮助。
比如有一张图片作为logo,它放在一个id为logodiv的DIV中,在CSS中是这样定义的:
#logoDiv{
width:300px;
height:100%;
background:transparent url(../img/logo.png) no-repeat -65px 0px;
}
这张图片在FF显示没有问题,在IE6中就需要加上这样一段:
*html #logoDiv{
width:300px;
height:100%;
margin-left:-65px;
background-color:transparent;
background-image:none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="web/img/logo.png", sizingMethod="crop");
}
这段代码FireFox是不认识的,会被略过,图片会继续上面#logoDiv的效果,而IE会用下面一段取代上面这一段,所以滤镜透明图片的效果就出现了。这两段代码放在一起,无论客户浏览器是IE6或是FireFox都能适应了。
使用滤镜有两点需要注意的:一是图片地址是网页相对app的地址,不是css相对app的地址,所以上面两处路径会有差异;另外一点是在不同的IE滤镜的写法也有差异,需要根据客户浏览器实际情况调整一下。
具体代码请见,其中有三处使用了滤镜,分别是logo,主菜单左侧和右侧,您可以从下面的代码中去寻找它们
http://www.box.net/shared/tz5k1um68l
http://www.box.net/shared/mbdf2e85yi