【分享】你还在为IE6 不支持 PNG24 格式图片的半透明效果而烦恼吗?
时间:2010-09-08
来源:互联网
问题
烦恼的原因,IE6 不支持 PNG24 格式图片的半透明效果,答http://topic.csdn.net/u/20100902/13 /8bc405a1-2814-4ddc-b9d7-b697430d84c0.html?97270帖子问。
透明透明
透明,在设计里可以实现比较漂亮的效果,可以让你的页面有一种立体感,朦胧感。关于透明的实现可以使用CSS和IE的filer来完成,但,对于一个图片不同部位不同的透明度就不好实现了,这是就要借助图片来实现了。
我们知道,png是无损压缩,而且对透明支持的很好。所以,一般都会选择此格式的图片来展示透明效果。PNG24 格式图片可以携带 Alpha 半透明通道,以便呈现从透明到不透明间过渡色彩效果,但是用此种图片的问题在于: IE6 不支持这种格式原有的透明特性,而且带有半透明通道的 PNG24 格式图片在 IE6 中通道颜色被显示成灰色,不具有半透明效果。
例子
HTML code
可见
IE6 浏览器在处理带有半透明通道的 PNG24 格式图片时,错误的将半透明通道渲染成灰色。
解决
HTML code
原文地址
http://www.w3help.org/zh-cn/causes/HO3004
烦恼的原因,IE6 不支持 PNG24 格式图片的半透明效果,答http://topic.csdn.net/u/20100902/13 /8bc405a1-2814-4ddc-b9d7-b697430d84c0.html?97270帖子问。
透明透明
透明,在设计里可以实现比较漂亮的效果,可以让你的页面有一种立体感,朦胧感。关于透明的实现可以使用CSS和IE的filer来完成,但,对于一个图片不同部位不同的透明度就不好实现了,这是就要借助图片来实现了。
我们知道,png是无损压缩,而且对透明支持的很好。所以,一般都会选择此格式的图片来展示透明效果。PNG24 格式图片可以携带 Alpha 半透明通道,以便呈现从透明到不透明间过渡色彩效果,但是用此种图片的问题在于: IE6 不支持这种格式原有的透明特性,而且带有半透明通道的 PNG24 格式图片在 IE6 中通道颜色被显示成灰色,不具有半透明效果。
例子
HTML code
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <h3>透明背景的 PNG8 格式图片</h3> <img src="http://www.w3help.org/zh-cn/causes/H/O/3/004/png8.png"/> <h3>具有半透明过度背景的 PNG24 格式图片</h3> <img src="http://www.w3help.org/zh-cn/causes/H/O/3/004/png24_alpha.png"/> <h3>没有透明效果的 PNG24 格式图片</h3> <img src="http://www.w3help.org/zh-cn/causes/H/O/3/004/png24_no_alpha.png"/> </body> </html>效果比较图:
可见
IE6 浏览器在处理带有半透明通道的 PNG24 格式图片时,错误的将半透明通道渲染成灰色。
解决
HTML code
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script type="text/javascript"> 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]; 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.onload=function(){ fixpng24(); } </script> </head> <body style="background-color:yellow;"> <br/>透明背景的 PNG8 格式图片<br/> <img src="http://www.w3help.org/zh-cn/causes/H/O/3/004/png8.png"/> <br/>具有半透明过度背景的 PNG24 格式图片<br/> <img src="http://www.w3help.org/zh-cn/causes/H/O/3/004/png24_alpha.png"/> <br/>没有透明效果的 PNG24 格式图片<br/> <img src="http://www.w3help.org/zh-cn/causes/H/O/3/004/png24_no_alpha.png"/> </body> </html>关键是批量处理的那个函数 fixpng24()。
原文地址
http://www.w3help.org/zh-cn/causes/HO3004
作者: WebAdvocate 发布时间: 2010-09-08

作者: wxf163 发布时间: 2010-09-08
就是这个样子的
作者: luokaijie 发布时间: 2010-09-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28