目前大部分浏览器对PNG的支持并不完善,IE虽然可以显示PNG图片,但如果PNG图片中含有透明部分,那么透明部分的显示就不正常了。
解决这个问题大致有以下方法(其原理都是通过AlphaImageLoader滤镜来解决)。
方法一:
程序代码
<div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/images/header.png);width:200px;height:50px"></div>
点评:这种方法虽然较好的解决了IE 5+的浏览器,但却得本来能正常显示透明PNG图片的FireFox无法正常显示!
方法二:
程序代码
<script type="text/javascript">
function isIE(){
if (navigator.appName!="Microsoft Internet Explorer") {return false}
return true
}
function correctPNG()
{
for(var i=0; i<document.images.length; i++)
{
var img = document.images[i]
var LW=img.width
var LH=img.height
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
{
img.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+img.src+", sizingmethod=scale);"
img.src="/images/transparent.gif"//transparent.gif为1px*1px的透明gif图片
img.width=LW
img.height=LH
}
}
}
if (isIE()) {window.attachEvent("onload", correctPNG);}
</script>
点评:这种方法确实能解决这个问题,但是如果不是在本地调试,通常需要一段时间的转换!
方法三:
程序代码
<div id="header"><!--此DIV为需要插入PNG图片的区域-->
<script type="text/javascript">
if (navigator.appName!="Microsoft Internet Explorer") {
document.write("<img src=\"/images/header.png\" width=\"200\" height=\"50\" alt=\"站长吧 Master8.NET\" />");
} else {
document.write("<img style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/images/header.png, sizingmethod=scale);width:200px;height:50px;\" src=\"{$rootpath}/images/transparent.gif\" width=\"200\" height=\"50\" alt=\"小崔设计\" />");
}
</script>
<div>
点评:事实上网页中绝对需要使用透明PNG图片的地方并不多,所以如果你的网页中仅仅是一两处使用透明PNG图片,建议用这种方法。
如果浏览者禁用了js,方法二和三当然失去了作用。针对方法三,可以做一些完善:
程序代码
<div id="header">
<div id="Index_header">图片简要说明,正常浏览本站请不要禁用js</div>
<div>
<script type="text/javascript">
if (navigator.appName!="Microsoft Internet Explorer") {
document.all.Index_header.innerHTML="<img src=\"/images/header.png\" width=\"200\" height=\"50\" alt=\"小崔设计\" />"
} else {
document.all.Index_header.innerHTML="<img style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/images/header.png, sizingmethod=scale);width:200px;height:50px;\" src=\"/images/transparent.gif\" width=\"200\" height=\"50\" alt=\"小崔设计" />"
}
</script>
这样如果js能正常运行,'图片简要说明,正常浏览本站请不要禁用js'将被图片替换。然而令人遗憾的是:document.all.Index_header.innerHTML在FireFox中不能被正常运行:(
上述方法是本人在实践中的一点总结,由于浏览器的差异,可以说都不尽完善,这是这个年代无法回避的问题。
注:应用了PNG AlphaImageLoader的层内如果有文字链接,文字链接将失效,需要为其定义position:relative;
将其独立从出来,使其不受其父层属性影响。
- 浏览: 7078504 次
- 性别:
- 来自: 上海
最新评论
-
autosuggestion:
实现一个智能提示功能需要JavaScript、ajax、数据库 ...
自动提示结果 -
岁月之眸:
...
Java读TXT文件 -
yujian58:
写的好。
在线客服技术方案 -
QQ1067184821:
你好,能不能发个完整的给我呢?1067184821@qq.co ...
Extjs3.2+Json lib动态树与GridPanel简单展现 -
chenhua0725:
能不能发一个完成的包给我呢,谢谢了,83667664@qq.c ...
Extjs3.2+Json lib动态树与GridPanel简单展现
相关推荐
在提供的文件中,"demo.htm"可能是演示如何在IE6中实现PNG透明通道的网页。这个文件可能包含了必要的HTML结构、CSS样式和JavaScript代码,以展示pngfix工具的工作原理。"复件 demo.htm"是该文件的副本,可能是为了...
在VB(Visual Basic)6.0环境下开发时,有...通过利用GDI+的功能,开发者可以创建出能够正确显示PNG透明效果的自定义控件,提升应用程序的视觉效果。在实际项目中,这样的控件对于保持界面的现代感和专业性至关重要。
PNG(Portable Network Graphics)是一种支持透明度的图像格式,但在IE6中,它无法正确显示带有alpha透明通道的PNG-24图像,导致图片出现半透明部分变成全黑或者背景颜色无法透过,这被称为“PNG透明问题”。...
然而,IE6及更早版本并不完全支持PNG-8和PNG-24的阿尔法通道,导致在这些浏览器中显示PNG图片时可能会出现不透明或错误的透明效果。 为了在IE中实现PNG图片的透明,我们可以采用CSS滤镜(Filter)技术。滤镜是IE...
在提供的压缩包文件中,`checkerboard.gif`可能是用于模拟透明背景的棋盘格图像,`blank.gif`可能是用于透明效果的占位符,`iepngfix.htc`是上面提到的HTC行为文件,`index.html`是示例网页,`alixixi.png`可能是...
总之,要解决PNG图片在IE6和Firefox上的透明兼容问题,开发者需要了解PNG格式的透明特性,掌握iepngfix.htc的行为文件使用方法,以及如何在CSS中应用这些技巧,以实现跨浏览器的兼容性。这是一个典型的前端开发中的...
PNG(Portable Network Graphics)格式支持透明度,使得设计师可以创建半透明或有背景色透明的图像,但在旧版本的IE浏览器中,PNG-24格式的图片透明效果往往无法正常显示。 PNG-8格式只支持256色,并且可以实现简单...
PNG(Portable Network Graphics)是一种常见的图像格式,它支持24位真彩色以及Alpha通道透明度,但在IE6中,对于带有Alpha透明度的PNG-24图像,浏览器默认无法正确显示透明效果。这个问题导致了“IE6png透明JS”这...
而PNG-24则可以显示更多的颜色并具有Alpha通道,能够实现不同程度的透明,但在IE6中默认是不透明的。 解决这个问题的一个常见方法是使用CSS滤镜。IE6特有的CSS滤镜属性可以用来模拟PNG-24的Alpha透明。例如,我们...
这个库通过JavaScript代码来模拟对PNG透明的支持,从而使得在IE6中可以正确显示带有透明效果的PNG图片。文件“DD_belatedPNG_0.0.8a.js”就是这个库的一个版本,它可以通过引入到HTML页面中,来为IE6提供透明PNG的...
标题中的“ASP.NET在IE中显示透明PNG图像控件源代码”指的是一个解决方案,解决了IE5.5和IE6在显示具有Alpha通道透明度的PNG图像时遇到的问题。通常,这些旧版本的IE浏览器会将透明PNG图像显示为不透明或出现错误的...
在探讨“ie6z中兼容页面中所有png图片透明”的问题时,我们首先需要理解几个关键概念:Internet Explorer 6(简称IE6),PNG图片格式,以及如何在IE6中处理PNG图片的透明性。 ### Internet Explorer 6 IE6是微软在...
PNG格式的图片支持 alpha 透明度,但在IE6中并未得到良好的支持,导致图片背景显示为黑色或不透明,这与现代浏览器和其他版本的IE表现不一致。为了解决这个问题,开发者们探索出了多种方法,其中一种是通过...
总的来说,解决IE6中的PNG透明问题需要对浏览器兼容性有深入理解,并可能需要借助一些辅助工具。`clear_png.js`是众多解决方案之一,它利用JavaScript和CSS滤镜技术,为开发者提供了一种简单易用的途径,使PNG图片在...
要解决IE6中的PNG透明问题,有几种常见的方法: 1. **CSS滤镜(Filter)**:IE6提供了一个名为`AlphaImageLoader`的滤镜,可以用来处理PNG的透明性。通过在CSS中添加如下代码,可以实现PNG图片的透明效果: ```css...
但在IE6及以下版本,由于其内核的限制,只支持8位PNG(不包含Alpha透明通道)。 以下是针对IE浏览器PNG透明问题的几种解决方案: 1. **CSS滤镜法**:利用CSS滤镜(Filter)属性,我们可以让IE6支持PNG24的透明。...
PNG格式允许24位色彩的同时还提供了 Alpha 通道,可以实现半透明效果,但在IE6中,这种透明特性却无法正常显示,导致图片背景呈现出不透明的黑色或白色。以下是对这个问题的详细分析和解决方案: 首先,我们需要...
总结起来,解决IE6中的PNG透明度问题,可以通过CSS滤镜、JavaScript库、条件注释以及图像格式转换等多种方式。选择哪种方法取决于具体项目的需求和开发者的技术栈。虽然现在IE6的使用率已经很低,但在维护旧网站或...
但在IE6中,PNG图片的Alpha通道(用于存储透明度信息)并不被正确识别,导致图片的透明区域在页面上显示为不透明或背景色。这在视觉呈现上造成了困扰,尤其是在设计复杂、色彩丰富的网页时。 #### 解决方案:...
PNG是一种高质量、支持透明度的图像格式,但在IE6中,当尝试使用带有Alpha透明通道的PNG图像时,背景会显示为灰色,而不是预期的透明效果。这个问题给网页设计师带来了很大的困扰,因为它破坏了网站的视觉一致性。 ...