jquery
DD_belatedPNG,解决IE6不支持PNG绝佳方案
我们知道IE6是不支持透明的PNG的,这无疑限制了网页设计的发挥空间.
然而整个互联网上解决这个IE6的透明PNG的方案也是多不胜数,从使用IE特有的滤镜或是expression,再到javascript+透明GIF替代.但是这些方法都有一个缺点,就是不支持CSS中backgrond-position与background-repeat.
而我今天介绍DD_belatedPNG,只需要一个理由,就是它支持backgrond-position与background-repeat.这是其他js插件不具备的.同时DD_belatedPNG还支持a:hover属性,以及<img>.
原理
这个js插件使用了微软的VML语言进行绘制,而其他多数解决PNG问题的js插件用的是AlphaImageLoader滤镜.
使用方法
1.在这里下载DD_belatedPNG.js文件.
2.在网页中引用,如下:
<!--[if IE 6]>
<script src="DD_belatedPNG.js" mce_src="DD_belatedPNG.js"></script>
<script type="text/javascript"><!
<!
/* EXAMPLE */
DD_belatedPNG.fix('.png_bg');
/* 将 .png_bg 改成你应用了透明PNG的CSS选择器,例如我例子中的'.trans'*/
// -->
3.有2种调用函数,一种是DD_belatedPNG.fix(),如上代码.另一种是fix(),这中方法需要在函数内指出css选择器名.
使用a:hover请留意
5-25更新:如果你也像jutoy同学一样想要用透明PNG作为a:hover时的背景图片,那么你需要留意你的代码,需要以”a:hover”来作为选择器.否则可能会导致无法成功.同时我也更新了demo,请需要的更新查看.接着我们看看正确的代码:
<!--[if IE 6]>
<script type="text/javascript" src="js/DD_belatedPNG.js" ></script>
<script type="text/javascript">
DD_belatedPNG.fix('.trans,.box a:hover');
</script>
<![endif]-->
其他方案
在这里还是提供其他方案供大家参考.尽管我觉得DD_belatedPNG最好
最近我还发现一些很不错很好玩的jQuery插件,接下来也会陆续介绍给大家使用.
people also love:

哈哈,很有用,我拿走了!谢谢
哥们不能不发个例子上来啊,我没弄明白?
你好,原谅我的demo链接不够明显
http://www.ediyang.com/demo/DD_Png/
这个链接就是例子演示,你要用IE6来浏览
看了下,很好很强大,谢谢了。
eddie,请问google上的库文件能解决这个问题吗?
你是指http://code.google.com/p/ie7-js/ 还是说google CDN加速的jQuery这些呢?
ie7-js是无法支持PNG的backgrond-position与background-repeat的.
http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js这个行吗?
喔,这是不可以的
jQuery只是一个javascript类库,只是将JavaScript进行功能封装,等于使用js更加方便而已.里面也没有定义解决IE6这个问题的函数的.
嗯,好方法收藏了。
有个小问题想请教,DD_belatedPNG.fix(’.png_bg’);
这一句里面如果有多个CSS选择器 该怎么表示呢?
之间用逗号隔开还是怎么的·?
是的,用逗号隔开.
例如DD_belatedPNG.fix(’.logo, .png_bg’);
特别是网站LOGO,不用PNG不行啊
的确啊 现在这个博客的LOGO就是PNG,要不然真难定位
技术啊,有点太深奥了,需要点时间消化…
使用了DD_belatedPNG
ff下 PNG有点模糊。特别是文字用了PS文字平滑功能出来的PNG,更加模糊
有解决办法么?
会模糊?能给个例子的网址我看看吗?
我用过2个项目上来没有观察出来哦
你好,eddie,我在网上找了很多方法,都是不行,用你这个方法也出现了问题.
具体环境:使用兼容IE6、7、8 FF的纯CSS下拉导航,具体代码为:http://hi.baidu.com/tianfan/blog/item/b205e1d3ec7f82dfa8ec9a55.html
目的:想在下拉菜单中使用png背景,在IE6环境下
测试:使用:
DD_belatedPNG.fix(’.ul,.ul a:hover’);
出现的结果是:本已经隐藏的下拉菜单,出来,不显示链接文字!当鼠标hover时才显示出链接文字。
希望您有时间帮忙测试一下!不胜感激!
IE makes the web dev world a nightmare, Gill Bates, go hell
是啊 到头来IE8还要提供兼容不标准网站的模式 自己害自己阿
[...] 明天是党课结业考试,本来今天是打算闭关的,谁知道拿着复习资料在电脑前不知不觉的开始改起主题来了。在原来主题的框架下做了一点点美化,看起来没有那么呆。谢谢eddie.Yang提供的技术支持,让32位PNG在IE6下面也能使用了。不过貌似导航条的hover在IE6下面有点小问题。不管了,大家凑合着看看吧。有时间再请教一下eddie.Yang。再次呼吁用IE6的童鞋,赶紧升级吧。 [...]
您好:
這個工具真的非常實用~不知道您有沒有經驗是用在body是透明背景的網頁呢!
我想到一個變通的方式是再包一層DIV當作網頁背景。但是覺得這樣繞了一圈~。不知道您有沒有直接在網頁body用這個js的經驗可以分享?
你的意思是说把透明png作为body的background-image吗?
能不能把你的例子代码发给我ahhqxqq#gmail.com
謝謝幫忙唷~! ^^
[...] 解决方法: PNG图片在IE6上的透明问题: 来源:http://www.ediyang.com/dd_belatedpng-best-way-support-ie6-png/ [...]
强大,不错,学习了,之前一直都用那个 .htc
很好,拿走了~~这个只解决了用PNG图片做背景的问题,有没有解决用img标签插入PNG图片的方法?
同学,这个js也支持标签插入PNG的,你可以再试试。
[...] DD_belatedPNG,支持backgrond-position与background-repeat. 同时DD_belatedPNG还支持a:hover属性,以及<img>,不仅支持png作为图片,也支持标签插入的png图片。这里也有一份中文的说明。 [...]
我用了这个方法,但是发现一个问题,就是浏览器刷新一下背景就不出来了?但是你的demo又没这个问题,达人帮我看看,测试地址是:
http://www.xiudou.net/test/content.html
谢谢!!
不错的博客啊,文章很有见解,学习过了,继续努力啊~~~