修复IE 6 PNG图片透明
1.用ps制作一张宽度,高度都为1px的透明图片,保存到images/blank.gif
2.用记事本创建一个文件命名为iepngfix.htc,代码如下:
<public:component> <public:attach event="onpropertychange" onevent="iePNGFix(0)" /> <script type="text/javascript"> // IE5.5+ PNG Alpha Fix v1.0 // (c) 2004-2008 Angus Turnbull http://www.twinhelix.com // This is licensed under the GNU LGPL, version 2.1 or later. // For details, see: http://creativecommons.org/licenses/LGPL/2.1/ // This must be a path to a blank image, relative to the HTML document(s). // In production use I suggest 'images/blank.gif' or similar. That's all! if (typeof blankImg == 'undefined') var blankImg = 'images/blank.gif'; //注意上面这个图片为刚才创建的图片路径,别搞错了 function filt(s, b) { var f = 'DXImageTransform.Microsoft.AlphaImageLoader'; var sM = (currentStyle.backgroundRepeat == 'no-repeat') ? 'crop' : 'scale'; s = (s || '').replace(/\(/g, '%28').replace(/\)/g, '%29'); if (s && !(/IMG|INPUT/.test(nodeName) && !b) && currentStyle.width == 'auto' && currentStyle.height == 'auto') { style.width = offsetWidth + 'px'; style.height = clientHeight + 'px'; if (currentStyle.display == 'inline') style.display = 'inline-block'; } if (filters[f]) { filters[f].enabled = s ? true : false; if (s) with (filters[f]) { src = s } } else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="' + sM + '")'; } function iePNGFix(init) { if (!/MSIE (5\.5|6)/.test(navigator.userAgent) || typeof filters == 'unknown') return; var evt = init ? { propertyName: 'src,background' } : event; var isSrc = /src/.test(evt.propertyName); var isBg = /background/.test(evt.propertyName); var isClass = !init && ((this.className != this._png_class) && (this.className || this._png_class)); if (!(isSrc || isBg || isClass)) return; this._png_class = this.className; var blank = blankImg.match(/([^\/]+)$/)[1]; // Required for Whatever:hover support - erase any set BG if className changes. if (isClass && ((style.backgroundImage.indexOf('url(') == -1) || (style.backgroundImage.indexOf(blank) > -1))) { setTimeout(function() { this.style.backgroundImage = '' }, 0); return; } if (isSrc && this.src && /IMG|INPUT/.test(nodeName)) { if ((/\.png/i).test(src)) { filt(src, 1); src = blankImg; } else if (src.indexOf(blank) == -1) filt(); } var bgSrc = currentStyle.backgroundImage || style.backgroundImage; if ((bgSrc + this.src).indexOf(blank) == -1) { var bgPNG = bgSrc.match(/^url[("']+(.*\.png[^\)"']*)[\)"']+[^\)]*$/i); if (bgPNG) { style.backgroundImage = 'url("' + blankImg + '")'; filt(bgPNG[1], 0); // Unclickable elements inside PNG backgrounds. var tags = ['a', 'input', 'select', 'textarea', 'iframe', 'object'], t = tags.length, tFix = []; while (t--) { var elms = all.tags(tags[t]), e = elms.length; while (e--) tFix.push(elms[e]); } var t = tFix.length; if (t && (/relative|absolute/i).test(currentStyle.position)) alert('IEPNGFix: Children of positioned element are unclickable:\n\n<' + nodeName + (id && ' id=' + id) + '>'); while (t--) if (!(/relative|absolute/i).test(tFix[t].currentStyle.position)) tFix[t].style.position = 'relative'; } else filt(); } } iePNGFix(1); </script> </public:component>
3.在css代码中加入
IMG {BEHAVIOR: url(iepngfix.htc)}
其中 iepngfix.htc 为刚才所创建的文件,注意调用的路径。
方法二:
<!--[if IE 6]> <script> function correctPNG() { for(var i=0; i<document.images.length; i++) { var img = document.images[i]; 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; i = i-1; } } } window.attachEvent("onload", correctPNG); </script> <![endif]-->
技术文档