有效解决IE6浏览器下PNG图片背景不透明方法合集

大家做网页设计的都知道,IE7以下的IE版本不支持png背景透明!那么,我们应该怎么做呢?逍遥乐今天就把自己收集到的解决方法分享给大家,总有一个适合你!

方法一

以下方法能有效解决ie6下png透明问题,本人亲测可以正常使用,如果你在使用中出现问题,请看实例中的说明(英文不精的童鞋可以用谷歌翻译哟):

<!--[if lt IE 7]>
<script type="text/javascript" src="images/iepngfix_tilebg.js"></script>
 <style type="text/css">
 img, div, input { behavior: url("images/iepngfix.htc") }
 </style>

在页面中head部分加上如上代码,<!--[if lt IE 7]>是为了让以下浏览器执行,其他浏览器不执行,因为以上浏览器都支持png背景透明。

然后在images目录下放置如下三个文件:

有效解决IE6浏览器下PNG图片背景不透明方法合集

方法二:

使用DD_belatedPNG_0.0.8a-min.js
老外写的!很实用的!用法
<!--[if lte IE 6]>
<script src="DD_belatedPNG_0.0.8a.js" type="text/javascript"></script>
<script type="text/javascript">
DD_belatedPNG.fix('div, ul, img, li, input , a');
</script>
<![endif]-->
fix处是你需要进行透明化的标签,或者类都可以!!
这是js文件的下载地址:

方法三:

js代码:
 function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.
{
var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])
if ((version >= 5.5) && (document.body.filters)) 
{
for(var j=0; j<document.images.length; j++)
{
var img = document.images[j]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
{
var imgID = (img.id) ? "id='" + img.id + "' " : ""
var imgClass = (img.className) ? "class='" + img.className + "' " : ""
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
var imgStyle = "display:inline-block;" + img.style.cssText 
if (img.align == "left") imgStyle = "float:left;" + imgStyle
if (img.align == "right") imgStyle = "float:right;" + imgStyle
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
var strNewHTML = "<span " + imgID + imgClass + imgTitle
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
img.outerHTML = strNewHTML
j = j-1
}
}
} 
}
window.attachEvent("onload", correctPNG);
css代码:
#id{background:url(图片路径) ;_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='scale', src="图片路径");_background:none;}

1、新建一个JS文件为iepngfx.js,将以上JS代码拷贝到JS文件里
2、在HTML中声明只有IE6读取此新建JS文件iepngfx.js中
只允许IE6读取此JS文件方法:
<!--[if IE 6]>
<script src="images/iepngfx.js" language="javascript" type="text/javascript"></script>
<![endif]-->
3、在html中使用图片标签IMG运用PNG图片,在IE6试试看PNG图片背景是否透明了。

方法四:

大致同方法三
1、新建JS文件同上,命名为iepngfx.js,将方法三中的JS代码拷贝到JS文件里
2、在HTML中声明只有IE6读取此新建JS文件iepngfx.js中
只允许IE6读取此JS文件方法:
<!--[if IE 6]>
<script src="images/iepngfx.js" language="javascript" type="text/javascript"></script>
<![endif]-->
3、在CSS中运用PNG图片作为背景的地方加入以下CSS代码:

 #id{background:url(图片路径) ;_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='scale', src="图片路径");_background:none;}

这样即可解决PNG图片在HTML中img作为图片图标背景不能透明或PNG图片作为网页背景background运用的一样实现PNG

当然了我暂时就收集到这么多,如果您还有更好的方法,可以在评论中列出来!大家一起互相借鉴解决!