<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 297,  comments - 1618,  trackbacks - 0

        轉載自:http://www.azuresky.com.cn/post/WebJourney-PngTransparentInIE6.php#topreply

       很多朋友在制作網頁時都會用到圖片透明。使其部分透明的圖片后面顯示背景部分。
    而現在流行的具有透明性的圖片有GIF和PNG兩種非常普及格式。

    GIF(Graphics Interchange Format圖像互換格式)可實現圖像區域的部分或全局透明。現非常多的網站都將其運用到其中。
    但是256色的限制GIF的使用范圍。還有一個問題:譬如,當我們的圖像邊緣有陰影時,保存透明后會發現其邊緣不是以漸變式透明顯示,而是用灰度色顯示而無透明而言。

    解決上面GIF的缺陷方案最好方法就是使用現在網絡上流行使用的另一種圖像格式PNG(Portable Network Graphic Format流式網絡圖形格式)
    但是PNG最大的問題就是,它在IE6下無法顯示透明區域(Firefox、Opera、Safari均支持PNG透明),會有一種灰白色代替成為其背景色。這不是PNG這個格式圖片的問題,而是IE6的BUG,沒有將PNG的Alpha通道打開,造成透明PNG圖片的在IE6上顯示不出透明區域。

    現在就有種方法是通過引入JavaScript的方式解決這個問題。

    第一步:
    新建一個pngfix.js文件寫入以下代碼(放在你網頁的相同目錄下):


    var PIXELGIF="pngfix.gif";// 這個是個頭1*1像素的透明gif圖片,請自行建立并放在你網頁的相同目錄下

    var arVersion = navigator.appVersion.split("MSIE");
    var version = parseFloat(arVersion[1]);
    var pngxp=/\.png$/i;
    var AlphaPNGfix= "progid:DXImageTransform.Microsoft.AlphaImageLoader";
    function fixPNGAll() {
            if(!document.all) return;
            if ((version >= 5.5 && version < 7) && (document.body.filters)) {
              for(var i=0; i<document.images.length; i++) {
                    var img = document.images[i];
                    if(img.src && pngxp.test(img.src)) {
                      var imgName = img.src;
                      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:" +AlphaPNGfix
                      + "(src='" + img.src + "', sizingMethod='scale');\"></span>";
                      if (img.useMap) {
                            strNewHTML += "<img style=\"position:relative; left:-" + img.width + "px;"
                            + "height:" + img.height + "px;width:" + img.width +"\" "
                            + "src=\"" + PIXELGIF + "\" usemap=\"" + img.useMap
                            + "\" border=\"" + img.border + "\">";
                      }
                      img.outerHTML = strNewHTML;
                      i--;
                    }
              }
              /* for type=image png button */
              var kmax = document.forms.length;
              for(var k=0; k<kmax; k++) {
                    var fmob = document.forms[k];
                    var elmarr = fmob.getElementsByTagName("input");
                    var jmax = elmarr.length;
                    for(var j=0; j<jmax; j++) {
                            var elmob = elmarr[j];
                            if(elmob && elmob.type=="image" && pngxp.test(elmob.src)) {
                                    var origsrc = elmob.src;
                                    elmob.src = PIXELGIF;
                                    elmob.style.filter = AlphaPNGfix+"(src='" +origsrc +"')";
                            }
                    }
              }
            }
    }

    function fixPNG(img) {
            if(!document.all) return;
            var img;
        if(img && img.src && pngxp.test(img.src)) {
          var imgName = img.src;
          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:" +AlphaPNGfix
          + "(src='" + img.src + "', sizingMethod='scale');\"></span>";
          if (img.useMap) {
            strNewHTML += "<img style=\"position:relative; left:-" + img.width + "px;"
            + "height:" + img.height + "px;width:" + img.width +"\" "
            + "src=\"" + PIXELGIF + "\" usemap=\"" + img.useMap
            + "\" border=\"" + img.border + "\">";
          }
          img.outerHTML = strNewHTML;
        }
    }


    第二步:
    在head標簽中引入js文件

    <script language="JavaScript" src="pngfix.js"></script>



    第三步(分兩種情況):
    1、指定PNG圖片使其在IE6下背景透明
    在img標簽中加入onload="fixPNG(this)"事件

    <img src="Name.png" alt="Name"  onload="fixPNG(this)" />


    2、頁面內所有PNG圖片使其在IE6下背景透明
    在body表情中加入onload="fixPNGAll()"事件

    <body onload="fixPNGAll()">



    需要注意的是:
    如果你的網頁需要符合XHTML 1.0標準的話,請用第三步中的2方法,因為1方法中img標簽中的onload事件是不符合XHTML 1.0標準的

    特殊情況(用PNG為button按鈕的背景時):
    如果你要在input標簽的背景中使用PNG圖片,此js文件同樣適用。

    先在head標簽中引入js文件

    <script language="JavaScript" src="pngfix.js"></script>



    在body標簽中加入onload="fixPNGAll()"事件

    <body onload="fixPNGAll()">


    示例

    <input type="image" src="Name.png" />



    其實還有其他一些方法也能解決PNG圖片格式在IE6中背景透明的問題,Tim將下次跟大家共同探討。

    posted on 2008-08-05 11:26 阿蜜果 閱讀(3541) 評論(3)  編輯  收藏


    FeedBack:
    # re: [轉]使PNG圖片格式在IE6中背景透明(pngfix)
    2008-08-31 01:10 | J.wei
    學習了呢,剛剛在想這個問題  回復  更多評論
      
    # re: 【轉】使PNG圖片格式在IE6中背景透明(pngfix)
    2009-02-17 16:56 | 笑嘻嘻
    根本就不行  回復  更多評論
      
    # re: 【轉】使PNG圖片格式在IE6中背景透明(pngfix)
    2009-09-03 17:06 | aisinvon
    不行啊,不起作用。你自己有沒有試過啊  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    <2008年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

          生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
          我的作品:
          玩轉Axure RP  (2015年12月出版)
          

          Power Designer系統分析與建模實戰  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關注blog

    積分與排名

    • 積分 - 2294512
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: jzzjzz免费观看大片免费| 四虎国产精品免费永久在线| 亚洲日韩在线观看| 久久99热精品免费观看牛牛| 天堂亚洲国产中文在线| 亚洲男人av香蕉爽爽爽爽| 99re6免费视频| kk4kk免费视频毛片| 亚洲天堂一区二区三区四区| 免费观看国产小粉嫩喷水| 99久热只有精品视频免费看| 亚洲色成人网站WWW永久四虎| 亚洲中久无码永久在线观看同| 无码国产精品一区二区免费式直播| 美女视频黄频a免费观看| 亚洲精品美女在线观看播放| 久久久青草青青国产亚洲免观| 97在线观免费视频观看| 精品无码一级毛片免费视频观看 | 国产免费变态视频网址网站| 久久成人免费电影| 老司机午夜性生免费福利| 亚洲最大中文字幕| 国产成人麻豆亚洲综合无码精品| 中文字幕影片免费在线观看| 国产麻豆一精品一AV一免费| 免费人成动漫在线播放r18| 亚洲二区在线视频| 亚洲人成电影亚洲人成9999网| 亚洲成av人在片观看| 在线观看人成视频免费| 在线观看免费av网站| 中文字幕在线免费播放| 色九月亚洲综合网| 亚洲一区欧洲一区| 67pao强力打造67194在线午夜亚洲| 精品国产亚洲一区二区在线观看| 日韩中文字幕在线免费观看| 国产精品视频免费一区二区| 亚洲高清视频免费| 久久国产乱子伦精品免费一|