jquery

DD_belatedPNG,解决IE6不支持PNG绝佳方案

我们知道IE6是不支持透明的PNG的,这无疑限制了网页设计的发挥空间.
然而整个互联网上解决这个IE6的透明PNG的方案也是多不胜数,从使用IE特有的滤镜或是e­xpression,再到javascript+透明GIF替代.但是这些方法都有一个缺点,就是不支持CSS中backgrond-positionbackground-repeat.

而我今天介绍DD_belatedPNG,只需要一个理由,就是它支持backgrond-positionbackground-repeat.这是其他js插件不具备的.同时DD_belatedPNG还支持a:hover属性,以及<img>.

看Demo

原理

这个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:

  1. 提升密码输入框易用性,2个jQuery插件

30 Comments:

  1. bolo says:

    哈哈,很有用,我拿走了!谢谢

  2. zhengenru says:

    哥们不能不发个例子上来啊,我没弄明白?

  3. resun says:

    看了下,很好很强大,谢谢了。

  4. bolo says:

    eddie,请问google上的库文件能解决这个问题吗?

    • eddie says:

      你是指http://code.google.com/p/ie7-js/ 还是说google CDN加速的jQuery这些呢?

      ie7-js是无法支持PNG的backgrond-position与background-repeat的.

    • eddie says:

      喔,这是不可以的
      jQuery只是一个javascript类库,只是将JavaScript进行功能封装,等于使用js更加方便而已.里面也没有定义解决IE6这个问题的函数的.

  5. Jutoy says:

    嗯,好方法收藏了。

  6. oliex says:

    有个小问题想请教,DD_belatedPNG.fix(’.png_bg’);
    这一句里面如果有多个CSS选择器 该怎么表示呢?
    之间用逗号隔开还是怎么的·?

    • eddie says:

      是的,用逗号隔开.
      例如DD_belatedPNG.fix(’.logo, .png_bg’);

  7. 万戈 says:

    特别是网站LOGO,不用PNG不行啊

    • eddie says:

      的确啊 现在这个博客的LOGO就是PNG,要不然真难定位

  8. Lxhome says:

    技术啊,有点太深奥了,需要点时间消化…

  9. dong8 says:

    使用了DD_belatedPNG
    ff下 PNG有点模糊。特别是文字用了PS文字平滑功能出来的PNG,更加模糊
    有解决办法么?

    • eddie says:

      会模糊?能给个例子的网址我看看吗?
      我用过2个项目上来没有观察出来哦

  10. omxy says:

    你好,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时才显示出链接文字。

    希望您有时间帮忙测试一下!不胜感激!

  11. nothing says:

    IE makes the web dev world a nightmare, Gill Bates, go hell

    • eddie says:

      是啊 到头来IE8还要提供兼容不标准网站的模式 自己害自己阿

  12. [...] 明天是党课结业考试,本来今天是打算闭关的,谁知道拿着复习资料在电脑前不知不觉的开始改起主题来了。在原来主题的框架下做了一点点美化,看起来没有那么呆。谢谢eddie.Yang提供的技术支持,让32位PNG在IE6下面也能使用了。不过貌似导航条的hover在IE6下面有点小问题。不管了,大家凑合着看看吧。有时间再请教一下eddie.Yang。再次呼吁用IE6的童鞋,赶紧升级吧。 [...]

  13. Rachel says:

    您好:
    這個工具真的非常實用~不知道您有沒有經驗是用在body是透明背景的網頁呢!
    我想到一個變通的方式是再包一層DIV當作網頁背景。但是覺得這樣繞了一圈~。不知道您有沒有直接在網頁body用這個js的經驗可以分享?

    • eddie says:

      你的意思是说把透明png作为body的background-image吗?
      能不能把你的例子代码发给我ahhqxqq#gmail.com

  14. [...] 解决方法: PNG图片在IE6上的透明问题: 来源:http://www.ediyang.com/dd_belatedpng-best-way-support-ie6-png/ [...]

  15. D.PenG says:

    强大,不错,学习了,之前一直都用那个 .htc

  16. ydw says:

    很好,拿走了~~这个只解决了用PNG图片做背景的问题,有没有解决用img标签插入PNG图片的方法?

    • eddie says:

      同学,这个js也支持标签插入PNG的,你可以再试试。

  17. [...] DD_belatedPNG,支持backgrond-position与background-repeat. 同时DD_belatedPNG还支持a:hover属性,以及<img>,不仅支持png作为图片,也支持标签插入的png图片。这里也有一份中文的说明。 [...]

  18. 路漫漫 says:

    我用了这个方法,但是发现一个问题,就是浏览器刷新一下背景就不出来了?但是你的demo又没这个问题,达人帮我看看,测试地址是:
    http://www.xiudou.net/test/content.html
    谢谢!!

  19. 火车票 says:

    不错的博客啊,文章很有见解,学习过了,继续努力啊~~~

Leave a Reply

Back To top