由于历史原因,IE较早的版本不支持PNG透明

可以支持GIF等的透明

由于png图片相对较小,所以很多网站还是青睐于PNG图片

最近就遇到这种情况,使用js和css滤镜来实现的与大家分享一下下:

首先,判断浏览器和版本,如果是IE7一下版本,进行处理

再者,遍历所有<img>控件,如果为png格式的处理;

最后,img的onload加载图片,并用css滤镜处理图片

//ie6 编码图片
function ES_PNG(obj,rootPath){
 if( !( $.browser.msie && parseFloat( $.browser.version ) < 7 )){
  return ;
 }
 obj.each(function(){
  var imgSrc = $.trim( $(this).attr("src") );
  var suf = "";
  //取图片的后缀
  if( imgSrc.length > 0 &&  imgSrc.indexOf("?") == -1){
   suf = imgSrc.substring( imgSrc.lastIndexOf(".")+1 ).toUpperCase();
  }else if( imgSrc.length > 0 &&  imgSrc.indexOf("?") != -1){
   imgSrc = imgSrc.substring( 0 , imgSrc.indexOf("?") );
   suf = imgSrc.substring( imgSrc.lastIndexOf(".")+1 ).toUpperCase();
  }
  if( suf == "PNG"){
   var which = $(this).get(0);
     var src = which.src;
      // 添加随机数防止图片缓存
     var random = new Date().getTime()  ;
     if(src.indexOf("?") == -1){
    src +="?random="+random ;
   }else{
    src +="&random="+random ;
   }
     var img = new Image();
      img.onload = function(){
       var width = parseInt( which.style.width );
       var height = parseInt( which.style.height );
       if( isNaN(width) || isNaN( height)){
        which.style.width  = ( parseInt(this.width) )+"px";
        which.style.height  = ( parseInt(this.height) )+"px";
          }else{
           which.style.width  =   parseInt( width)  +"px";
        which.style.height  =  parseInt( height) +"px" ;
       };
       which.src =  rootPath+"ieseal.gif"  ;//--1个像素的透明gif
       //设置css滤镜
    which.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='scale')";
   };
      img.src = which.src;
  };
 });
}

在web中调用该方法:

//if6去掉png背景
 ES_PNG($("img"),"${basePath}/images/public/");

其中ES_PNG()的两个参数:$("img")是所有的图片,${basePath}/images/是1像素透明gif图的位置

处理IE6下PNG图片透明背景问题的更多相关文章

  1. 解决IE6下 PNG图片有背景问题

    IE6下有时候png格式的图片会存在背景的问题,以下是我常用的解决办法: <!--[if IE 6]> <script src="js/DD_belatedPNG_0.0. ...

  2. 解决全站ie6下PNG图片不透明问题只要几行代码

    解决全站ie6下PNG图片不透明问题只要复制下面这几行代码粘贴在你的文档最底部,需要用到的包DD_belatedPNG_0.0.8a.js自己网上下载吧 代码走起 /*在文档底部加入以下代码*/ &l ...

  3. 解决IE6中 PNG图片透明的终极方案-八种方案!

    “珍惜生命,远离IE6”,IE6中的bug令很多Web前端开发人员实为头疼,因此不知道烧了多少脑细胞,在众多的Bug中最令人抓狂的就是IE对png图片的不支持,导致设计师和重构师放弃了很多很炫的效果, ...

  4. 解决IE6下png图片透明度不显示的问题

    世界上最遥远的距离,不外乎我在搞前端,你却在用旧IE,现在随着XP要退休了,IE6的市场占有率应该也会逐步下滑.不过基于天朝人民的惰性以及企鹅微软的“扎篱笆”活动,做网站的朋友依旧不能忽视IE6的存在 ...

  5. IE6下的png透明图片的背景定位

    在IE6下PNG透明图片做背景,无法使用background-position进行定位.但是可以使用margin和绝对定位来进行. 另外,由于IE6下的 :hover 只对<a>支持,对其 ...

  6. 解决IE6下png图片不透明

    ie6着实是非常让人讨厌,显示一张图片,也要带着灰白色的背景色,一张好好的png图片就这么不透明了. 用n多中网上的方式,差点成功的就还有这个了 _background: none; _filter: ...

  7. VC++使用CImage PNG转BMP图片透明背景处理

    PNG格式的图片是支持透明通道的,BMP格式的图片是没有透明通道的,所以当PNG格式的图片转换为BMP格式时,对于PNG图片的透明背景就需要进行特别的处理. VC++中的HBITMAP是支持透明色的, ...

  8. 解决ie6里png图片透明变白色bug

    加入这段js就行了. function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6. { var a ...

  9. DD_belatedPNG解决IE6下PNG不透明问题

    使用方法: 首先下载JS文件:http://dillerdesign.com/experiment/DD_belatedPNG/ 之后在页面中引用代码: <!--[if IE 6]>< ...

随机推荐

  1. 【翻译转载】【官方教程】Asp.Net MVC4入门指南(2):添加一个控制器

    2. 添加一个控制器 · 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-c ...

  2. 【Java】深入理解Java中的spi机制

    深入理解Java中的spi机制 SPI全名为Service Provider Interface是JDK内置的一种服务提供发现机制,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用 ...

  3. [LeetCode]7. Reverse Integer整数反转

    Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Examp ...

  4. php 出现空格,换行原因

    1.空格:转换成utf-8无bom格式 2.空格:<?php ?>标签结尾有中文,英文空格 3.换行,一个文件中有多个<?php ?>标签,标签间隔中有换行符合

  5. valueOf() 和 toString()

    valueOf():如果存在任意原始值,返回最适合该对象类型的原始值. toString():将该对象的原始值以字符串形式返回. 这两个方法一般是交由JS去隐式调用,以满足不同的运算情况.  举个栗子 ...

  6. 【Java/Android性能优 4】PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强

    本文转自:http://www.trinea.cn/android/preloaddatacache/ 本文主要介绍一个支持自动向前或向后获取新数据的缓存的使用及功能.Android图片内存缓存可见I ...

  7. LeetCode Minimum Depth of Binary Tree 找最小深度(返回最小深度)

    题意:找到离根结点最近的叶子结点的那一层(设同一层上的结点与根结点的距离相等),返回它所在的层数. 方法有: 1.递归深度搜索 2.层次搜索 方法一:递归(无优化) /** * Definition ...

  8. 详细步骤教你安装yii高级应用程序和配置composer环境

    现在开始工作,应公司的要求,要开始接触yii了,作为一个没有碰过yii的小白,首先一个问题就是怎么去安装高级程序应用,过程不麻烦,但是也需要细心和耐心,百度资料里面的教程都不太全,漏这漏那的,所以在这 ...

  9. 使用bouncycastle进行DESede/DESeee/AES128/AES192/AES256的加解密

    前言 默认的jdk不支持DESeee的算法,本地化的JDK中配置有拦截规则,可以通过使用bouncycastle的jar包中的DESEngine类来进行DESeee算法的运算. DES的8字节加解密 ...

  10. java中list强转为map类型

    起因:读取数据库文件的测试用例,测试用例需要存放到一个map中,方便下次调用, 读取的内容返回的内容存放在一个list中,并且数据内容是key=value的形式,最开始使用切片方式,做了很多无用功,后 ...