<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
    不行啊,不起作用。你自己有沒有試過啊  回復  更多評論
      

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


    網站導航:
     
    <2008年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

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

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

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關注blog

    積分與排名

    • 積分 - 2294296
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV综合色一区二区三区| 亚洲国产美女精品久久久久| 一区二区免费视频| 114一级毛片免费| 亚洲A∨午夜成人片精品网站| 亚洲天堂中文字幕| 羞羞漫画页面免费入口欢迎你 | 91人人区免费区人人| 国产精品99久久免费| 亚洲国产天堂在线观看| 在线亚洲v日韩v| 久久九九兔免费精品6| 久久w5ww成w人免费| 亚洲成a人在线看天堂无码| 在线亚洲精品福利网址导航| 亚洲精品V欧洲精品V日韩精品| 亚洲 欧洲 日韩 综合在线| 99视频免费在线观看| 日本特黄特黄刺激大片免费| 亚洲美女在线国产| 亚洲AV日韩AV天堂久久| 国产成人久久精品亚洲小说| 在线观看H网址免费入口| 亚洲精品白浆高清久久久久久| 亚洲av综合日韩| 久久久久久久91精品免费观看| 亚洲精品美女久久久久99| 无码一区二区三区亚洲人妻| 久草视频免费在线| 亚洲国产精品乱码一区二区| 男女猛烈xx00免费视频试看| 99精品全国免费观看视频| 亚洲国产精品一区| 中文字幕无码毛片免费看| 国产乱子伦精品免费无码专区 | 国产午夜亚洲精品| 亚洲一区免费观看| 亚洲综合伊人久久大杳蕉| 粉色视频成年免费人15次 | 青青久在线视频免费观看| 亚洲精品国产成人中文|