在两个涉及到png透明应用的项目里,使用了多种让png在ie6下面透明的方法。包括:pngfix和DD_belatedPNG_0.0.8a。下面分别介绍一下:
1、pngfix,使用js代码、AlphaImageLoader滤镜和一个透明gif来模拟png透明
使用方法:
第一步,把blank.gif、pngfix.htc和pngfix.js放在同一个文件夹里面
第二步,
第三步,在CSS样式表里制定标签应用 img,div,a,input {behavior: url(pngfix/pngfix.htc);}
2、DD_belatedPNG_0.0.8a,这个js插件使用了微软的VML语言进行绘制
使用方法:

优点:支持background-position定位,支持a:hover
缺点:因为是一个一个绘制的,如果png多的时候就有问题了,速度慢得有点受不了。
建议:
1、实在要使用这个js插件的话,可以在函数调用的时候,精确指定应用png的标签样式。例如:DD_belatedPNG.fix(’.png_bg’);尽量少用标签,这样遍历所有标签是一件很痛苦的事情。
2、也可以把所有需要做透明的png图片设计成全背景,然后通过一个CSS样式引入,再通过DD_belatedPNG.fix(”)指定。例如:把所有图标设计成全背景,CSS样式.icons {background-images:url(img/icons.png);},DD_belatedPNG.fix(’.icons’)。
还有值得提醒的几点,只要你遵循下面的几点,IE6会让你好过一点:
1、如果是多张图片合并的一张大图,每个图片之间留几像素空隙
2、每个图片宽高都尽量是偶数,图片坐标也是偶数(IE6的奇偶数是个超级大问题)
3、如果背景填充使用右对齐或者底对齐,那么还是会因为填充对象的宽高出现奇偶BUG,所以尽量用偶数坐标定位(这个就是我说的些许问题,其它都还好)
总结经验,我个人还是建议使用CSS滤镜来实现。几K的CSS代码,和一个可能带来缓慢访问速度和js冲突的js插件,你选择那一个?至于链接失效的问题不仅仅可以设置链接的position相对定位,也可以对该内容所在的层进行相对定位设置。