PNG格式的图片在使用透明效果时,有远远超过GIG格式的效果。但是,大家会发现,如果将透明背景的PNG格式图片放在网页上,用IE6.0打开时,背景成了灰色了?不但不好看,反而影响了美观。
在IE7.0以上的版本,PNG格式的透明图片是正常显示的。这让我们通常会碰到一个现象,打开老外的网站时,他们那群白痴,怎么都将不透明的图片放得那么难看呵?他们看不见吗?还是他们审美有毛病!?
其实,多数老外使用的IE已经不在IE6.0上了,他们要么用7.0以上的,要么用火狐,谷歌浏览器,所以,而出于PNG格式的图片显示效果的优越性,他们通常会使用PNG类型的透明背景图,但因为他们使用的IE级别高原因,使他们习惯性的忽略了使用IE6.0的浏览者,在他们看来,现象效果是非常优美的(他们普遍用的IE都是比较高的版本了),可到了我们看的时候就“变质了”。
那么,怎么处理这种“种族歧视”的不足呢?
将下面的代码拷贝到要用的地方就可以了
function correctPNG()
{
for(var i=0; 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 = " + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\">"
img.outerHTML = strNewHTML
i = i-1
}
}
}
function alphaBackgrounds(){
var rslt = navigator.appVersion.match(/MSIE (d+.d+)/, '');
var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
for (i=0; i var bg = document.all[i].currentStyle.backgroundImage;
if (bg){
if (bg.match(/.png/i) != null){
var mypng = bg.substring(5,bg.length-2);
//alert(mypng);
document.all[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mypng+"', sizingMethod='crop')";
document.all[i].style.backgroundImage = "url('')";
//alert(document.all[i].style.filter);
}
}
}
}
if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
window.attachEvent("onload", correctPNG);
window.attachEvent("onload", alphaBackgrounds);
}
你也可以将以上代码保存为比如png.js,在使用的地方进行调用。那IE6下烦人的灰色背景,便会消失了。为方便大家,卓航科技在此已将代码文件上传,你只需点击下面的地址就可将该png.js文件下载回去,在需要的时候,直接调用就行。