无
PNG24 格式图片可以携带 Alpha 半透明通道,以便呈现从透明到不透明间过渡色彩效果,但是 IE6 不支持这种格式原有的透明特性。
带有半透明通道的 PNG24 格式图片在 IE6 中通道颜色被显示成灰色,不具有半透明效果。
| IE6 |
|---|
分析以下代码:
<body style=" background-color:#00FF00"> <h3>透明背景的 PNG8 格式图片</h3> <img
src="png8.png" /> <h3>具有半透明过度背景的 PNG24 格式图片</h3> <img
src="png24_alpha.png" /> <h3>没有透明效果的 PNG24 格式图片</h3> <img
src="png24_no_alpha.png" /> </body>
以上代码向页面引入 PNG8 和 PNG24 图片,其中 PNG8 格式图片背景透明,PNG24 格式图片第一张具有半透明通道,第二张不具有透明度通道。
各浏览器显示效果如下:
| IE6 | IE7 IE8 Firefox Safari Chrome Opera | |
|---|---|---|
| PNG8 透明背景图 | ![]() |
|
| PNG24 半透明通道图 | ![]() |
![]() |
| PNG24 无透明通道图 | ![]() |
|
对照上表可见, IE6 浏览器在处理带有半透明通道的 PNG24 格式图片时,错误的将半透明通道渲染成灰色。其他浏览处理正常,无此问题。
function fixpng24(){ var arVersion = navigator.appVersion.split("MSIE"); var version =
parseFloat(arVersion[1]); if ((version >= 5.5) && (document.body.filters)){ for(var i=0;
i<document.images.length; i++){ var img = document.images[i]; if (img.src.toLowerCase().slice(-3)
== "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:pointer;" + 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--; } } } }
| 操作系统版本: | Windows 7 Ultimate build 7600 |
|---|---|
| 浏览器版本: |
IE6
IE7 IE8 Firefox 3.6 Chrome 4.0.302.3 dev Safari 4.0.4 Opera 10.51 |
| 测试页面: | ie6_png24_alpha.html |
| 本文更新时间: | 2010-08-05 |
PNG alpha 通道 透明 半透明