IE8下jQuery改变png图片透明度时出现的黑边

在网上搜了搜主要有以下几种办法:
1、把图片保存成PNG-8格式 。
2、把背景色一起切入并保存为JPG格式 。
以上两种方法我试了试 , 好像效果并不好png8格式仍就会有黑边 。
解决方法:
1、不要直接改变图片的透明度 , 而是给图片套个容器 , 去修改这个容器的透明度
【IE8下jQuery改变png图片透明度时出现的黑边】2、给这个容器加个颜色相近的背景颜色(非常重要 , 解决bug的关键就在这一步 , )
一般情况下 , 到此bug就解决了 , 如果还是有问题 , 请看下面:
3、给容器加个zoom: 1
(个人觉得这种办法只不过是一个障眼法 , 没有从根本上解决问题 , 看来目前只能这样了 , 期待有更好的方法)
目前互联网对于网页效果要求越来越高 , 不可避免的用到PNG图片 , PNG分为几种格 式 , PNG8 PNG24 PNG32,其中最常用的 , 也是显示效果和大小比较适中的则是PNG24,支持半透明 , 透明 , 颜色也非常丰富 , 但由于咱们国人使用IE系列或以IE为内核 系列的浏览器占大多数 , 并且由于 WINDOWS XP在国内市场份额比较大 , 并且XP上好多人还在用IE6 IE7 IE8等浏览器 , 而这些浏览器对于PNG支持或多或少都有差距 , IE6完全不支持PNG , IE7 IE8支持PNG不完全 , 在IE7 IE8下面对图片改变透明图的时候 , 延PNG透明区域的地方会有一条黑色的边框 , 如果有半透明的 , 则整个半透明区域都是黑色 , 这点对于要求美观的页面是不 能接受的 , 研究了下 , 发现把PNG当背景 , 用微软特有的滤镜加载图片 , 可以解决IE6不支持PNG的问题 , 并且也可以解决IE7 和IE8下面使用JQUERY动画透明效果时出现黑边的问题 , 有代码有真像 , 如下
Javascript代码

IE8下jQuery改变png图片透明度时出现的黑边

文章插图
在页面的/body的结束标记之前先引用jquery1.8类库 , 再加入以上代码 , IE6 7 8 显示PNG24都没有问题了 , 如果需要执行animate动画或获取图片时 , 发现在ie 6 7 8下找不到PNG图片了 , 或找到了改变其位置和透明图没有反应 , 这原因是correctPNG将页面上所有的PNG的IMG标签都替换成了SPAN标签 , 然后在SPAN标签上使用filter : progid:DXImageTransform.Microsoft.AlphaImageLoader 将PNG图片加载进来 , 所以 , 建议做法是在将图片用DIV包括起来 , 此DIV中只允许有一个IMG标签 , 然后对DIV进行位置或透明度的相关操作 , 例:
IE8下jQuery改变png图片透明度时出现的黑边

文章插图
还有一种情况是 , 我对这个图片除了要做透明和位移 , 还要改变其宽度和高度 , 对于这种情况 , 我建议采用以下方法
IE8下jQuery改变png图片透明度时出现的黑边

文章插图


    推荐阅读