PNG透明背景的多种方法

用photoshop制作透明背景的PNG图片,直接另存为.png格式的图片,IE7.0,Firefox可以正确识别,但是IE6.0出现问题,png透明针对IE6一直是件挺麻烦的事情。

要实现IE6.0透明背景方法多种多样,现在来介绍几种:

第一种方法:(photoshop法)
photoshop制作好了图片,保存时要选择 另存为web所有格式(ctrl+alt+shift+s) 这个保存才行
PNG图片另存为 PNG-8,256色 的格式 存储就可以了。

第二种方法:(css法)
定义一个样式,给某个div应用这个样式后,div的透明png背景图片自动透明了。(注意两处图片的路径写法不一样,本例中,test.png图片与html文件在相同目录)
css:
.pngs {
height: 100px;width: 100px;
background-image:url(test.png)!important;  /* FF IE7 */
background-repeat: no-repeat; _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’test.png’);  /* IE6*/
_ background-image: none; /* IE6 */
}

xhtml:
这种方法的优点就是使用简单方便,但是不能作为背景,且只能用作单个png图片的使用。如果要作为背景,需要新增加一个div层,并设置其position:relative;

css
.png div{position:relative;}

xhtml:


<div class='png'><div>




CSS PNG透明背景问题解决方法


这种方法可以使用在那些png图片不多,且不需要repeat的情况下。

第三种方法:(js法)
<script language="JavaScript">
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);
</script>
这种js先判断是否IE,然后判断ie版本,版本在6.0下则判定函数,给png的图片添加滤镜。
使用起来的确方便,无论多少图片都可以解决,但是依然无法repeat。

目前有 1 条评论

avatar

Parajumpers  2015-03-06 01:21 1楼

PNG透明背景的多种方法 - 网页设计 - 星知苑
Parajumpers http://www.inntre.no/admin/jakke.asp 回复
昵称
邮箱
主页
提交
订阅