由于历史原因,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. How to Install Apache Solr 4.5 on CentOS 6.4

    By Shay Anderson on October 2013 Knowledge Base  /  Linux  /  How to Install Apache Solr 4.5 on Cent ...

  2. 从零开始的全栈工程师——js篇2.10(对象与构造函数)

    对象与构造函数 一.js数据类型 基本数据类型:string   undefined   null  boolean  number 引用数据类型  Object  array  function 二 ...

  3. 1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛

    1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond         题目描述 Description ...

  4. 300行ABAP代码实现一个最简单的区块链原型

    不知从什么时候起,区块链在网上一下子就火了. 这里Jerry就不班门弄斧了,网上有太多的区块链介绍文章.我的这篇文章没有任何高大上的术语,就是300行ABAP代码,实现一个最简单的区块链原型. 我个人 ...

  5. 显示 Mac隐藏的文件夹 命令语句

    默认情况下,模拟器的目录是隐藏的,要想显示出来,需要在Mac终端输入下面的命令 显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFil ...

  6. UVALive 3530 Martian Mining(贪心,dp)

    分析: 对于网格grid[i][j]如果放向上的管道,那么grid[i][k], k>j 就只能放向上的管道了. 那么定义dp[i][j]表示第i行,最后一个放向左的管道是j的最大总矿量. j ...

  7. Java环境变量搭建(Windows环境)

    变量名:JAVA_HOME 变量值:C:\Program Files (x86)\Java\jdk1.8.0_91        // 要根据自己的实际路径配置 变量名:CLASSPATH 变量值:. ...

  8. 如果int x=20, y=5,则语句System.out.println(x+y +""+(x+y)+y); 的输出结果是()

    答案是25255 小括号优先级高,所以先算小括号内的x+y=25 然后再算前面的x+y=25 但是中间有个空的字符串,java会把这个空字符串后面的都当成字符串看待,所以结果是25255

  9. 操作系统(5)_内存管理_李善平ppt

    i386先通过段是管理,在通过页是管理

  10. 解决使用Application Loader上传ipa提示“上传appstore失败”

    试了好多次使用Application Loader上传ipa,一直提示上传失败,用其他mac电脑却可以,那就是环境有问题,笔者试过重装xcode,都无法解决问题, 查看日志类似是jdk版本问题,换了所 ...