`
helloyesyes
  • 浏览: 1295322 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

png在ie下显示不正常

阅读更多

pNG半透明背景图片效果
PNG图片在网页设计中扮演着一个很重要的角色,利用PNG图片的特点可以制作出实用,绚丽的效果,可是对于PNG图片的支持却不是很理想,Firefox和Opera对PNG支持的比较好,特别是Firefox浏览器。可是IE却不理PNG,使得设计者无法很随意的使用png图片。

IE5.5+的 AlphaImageLoader滤镜为通向png提供了一个道路,如果他载入的是PNG(Portable Network Graphics)格式,则0%-100%的透明度也被提供。我们就利用这个滤镜和hack来设计一个半透明png背景图片的模型。

经过多方面的实验比较了2种方法:css控制和js控制。总结如下:

css中镶入如下代码控制:

#png{background-image:url(images/jzz_02.png) no-repeat !important;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled="true", sizingMethod="scale", src="images/jzz_02.png");
background:none;}

比较累,需要一个个添加代码。而且用了滤镜后背景图片不支持background-position定位

具体代码:

//总css文件 style.css

#png{

background:url(image.png) no-repeat center !important;
}

//CSS代码中镶入ie6配置CSS配置文件 ie6.css

#png{

background:none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png',enabled='true', sizingMethod='scale');

}

//html格式

<head>
...
<link href="style.css" rel="stylesheet" type="text/css" />
<!--[if IE 6]>
<link href="ie6.css" rel="stylesheet" type="text/css" />
<![endif]-->
</head>
...

注:style.css文件里的图片url是相对于css文件的路径,ie6.css文件里src是相对于html文件的路径

JS控制:

比较方便,适合懒人- -!,但bug比较多,效率相对于css要低

比较常用的js代码:

1.

correctpng.js

// JavaScript Document

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
}
}
}
function alphaBackgrounds(){
var rslt = navigator.appVersion.match(/MSIE (d+.d+)/, '');
var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
for (i=0; i<document.all.length; 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);
}
}
}
}

html

<head>
...
<script type="javascript" src="correctpng.js"></script>

<!--[if IE 6]>

<script>

if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
window.attachEvent("onload", correctPNG);
window.attachEvent("onload", alphaBackgrounds);
}


</scrpit>

<![endif]-->

</head>

注 这个js方法不支持重复背景,如果背景重复的话就只能显示一个,别的都支持。

2.

使用先人写好的iepngfix类

这个类里面有3个文件

blank.gif替换为空白的图片

iepngfix.htc核心文件

iepngfix_tilebg.js貌似是控制重复背景的文件,不过我用了以后直接页面都显示不出- -!

具体用法:

在css文件里加入

img,div{

behavior: url("iepngfix.htc") ;

}

在html里head之间调用iepngfix_tilebg.js

注意最好blank.gif和htc文件放一个文件夹里 习惯都放在image文件夹里

总结:我个人认为使用css文件会比较好点,这对程序美观度和效率都会有一定的提高。

总结完毕。

==================================================================

另外的方法

新建一个叫png_fix.css的文件,内容如下:

Css代码 复制代码收藏代码
  1. *htmlimg,*html.png{
  2. behavior:expression((this.runtimeStyle.behavior="none")&&(
  3. this.pngSet?this.pngSet=true:(this.nodeName=="IMG"&&
  4. this.src.toLowerCase().indexOf('.png')>-1?(
  5. this.runtimeStyle.backgroundImage="none",this.runtimeStyle.filter
  6. ="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+
  7. this.src+"',sizingMethod='image')",this.src=
  8. "image/transparent.gif"):(this.origBg=this.origBg?this.origBg:
  9. this.currentStyle.backgroundImage.toString().replace('url("','')
  10. .replace('")',''),this.runtimeStyle.filter=
  11. "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+
  12. this.origBg+"',sizingMethod='crop')",
  13. this.runtimeStyle.backgroundImage="none")),this.pngSet=true)
  14. );
  15. }

然后在HTML文件的<LINK>部分加入<> 最后自己做一个1×1像素的透明gif图片,存为transparent.gif。 使用的时候是这样: 1、如果是在HTML里面直接插入的PNG图片,就直接会处理掉; 2、如果是在css里面写的用作背景的图片,需要在

里面加上class="png",最后就是
; 3、如果是链接,需要加上cursor: pointer;测试下来使用没有问题,非常完美。

=========================================================================
亲测成功的方法

把下面的代码放在head区就可以解决问题了。
<!--[if gte IE 5.5000]><script type="text/javascript" src="js/pngfix.js"></script><![endif]-->
pngfix.js文件的程序代码
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);
分享到:
评论

相关推荐

    IE无法显示png图片 IE部分图片显示为叉叉的解决办法

    弄了很长时间,搞郁闷了,Googole了一下“ie部分图片不显示”,原来是 PNG 图片不显示,终于找到了这根救命稻草,感谢主,阿门,阿弥陀佛,圣母玛利亚…… 1. 运行 fix-pngfilt.bat 文件 2. 双击 MIME-DATABASE-...

    在IE中不显示透明PNG图像纠正控件

    然而,早期的Internet Explorer(IE5.5和IE6)对PNG8和PNG24格式的透明度支持并不完全,导致在这些浏览器中透明PNG图像无法正常显示。这个问题对于设计师和开发者来说是一个挑战,因为他们需要确保网站在所有主流...

    完美解决png在ie6兼容问题完整示例

    PNG图像格式在Internet Explorer 6 (IE6)中存在兼容性问题,主要表现为半透明(Alpha)PNG图像显示不正常,出现灰色背景或边框,这严重影响了网页设计的美观和用户体验。为了解决这个问题,开发者通常会利用...

    png在ie下的透明度问题

    然而,在早期版本的Internet Explorer(尤其是IE5.5到IE7)中,PNG的透明度处理存在一些问题,导致图像显示不正常。这个问题通常被称为“PNG透明度问题”。 PNG图像有三种透明类型:完全透明(Alpha通道)、索引...

    PNG图片在IE6中非正常显示的处理方法

    引入这个脚本后,它可以自动处理页面上的所有PNG-24图像,确保它们在IE6下正常显示。使用方式是在HTML文件中引入`png24.js`,然后可能需要调用一个初始化函数来激活修复功能。 ```html &lt;script src="png24.js"&gt; ...

    PNG图片IE6下面解决最好的方法

    PNG图片在Internet Explorer 6(简称IE6)下的显示问题是一个历史遗留的挑战,由于IE6对PNG格式的不完全支持,导致透明效果和部分渲染出现异常。PNG是一种优秀的无损压缩图像格式,广泛用于网页设计,特别是需要半...

    IE6下PNG透明代码

    PNG是一种无损压缩的图像格式,支持透明度,但在IE6下,透明效果往往无法正常显示。为了解决这个问题,开发者们开发了各种JavaScript解决方案,以实现跨浏览器的PNG透明效果。 标题“IE6下PNG透明代码”所涉及的...

    IE显示不了PNG的解决办法

    当遇到IE显示不了PNG的情况时,可以按照以下步骤进行修复: 1. **打开注册表编辑器**:首先,需要以管理员身份运行“regedit”命令来打开注册表编辑器。点击“开始”按钮,输入“regedit”,在搜索结果中找到并运行...

    解决ie6下png图片背景问题

    Internet Explorer 6(简称IE6)是微软公司早期推出的一款浏览器,由于其对PNG(Portable Network Graphics)图像格式的支持存在局限性,导致在IE6下无法正常显示带有透明效果的PNG图片,这给网页设计师带来了不少...

    PNG在IE6下透明

    在IE6中,PNG的Alpha透明(半透明效果)并不能完美地呈现,导致图像显示不正常。这个问题在后续的IE7和IE8中得到了部分改善,但仍然需要特别处理来确保在这些旧版浏览器中的兼容性。 首先,我们需要了解PNG图像的...

    ie6下png透明图片显示不正常之最好的3种解决方案

    在互联网早期,IE6(Internet Explorer 6)作为当时最常用的浏览器,存在许多兼容性问题,其中PNG(Portable Network Graphics)格式的透明图片在IE6下显示不正常就是其中之一。PNG格式,特别是PNG-24格式,支持半...

    DD_belatedPNG.js解决IE6浏览器下的PNG透明图片显示问题

    这主要源于IE6不支持PNG8以上的Alpha透明度,导致透明PNG图片在该浏览器下显示为黑色背景或者完全不透明。为了解决这个问题,开发者们创造了一种名为“DD_belatedPNG”的JavaScript库,它通过JavaScript模拟了PNG...

    js修复IE不能显示PNG图片透明背景的方法

    具体来说,在IE 7及以下版本中,PNG图片无法正常显示其透明背景,而是呈现出一种灰色或白色背景,这严重影响了网页的美观性和设计的一致性。 #### 解决方案:JavaScript修复方法 为了解决这一问题,开发者们开发了...

    完美解决IE6下png透明

    在早期的网页设计中,IE6(Internet Explorer 6)作为主流浏览器,其对PNG(Portable Network Graphics)图像格式的支持存在显著的问题,尤其是对于PNG-24格式的图像,它无法正确显示背景透明或者半透明效果。这在...

    ie6显示png图片

    PNG(Portable Network Graphics)是一种无损压缩的位图格式,支持透明度和alpha通道,但在IE6中,特别是对于24位PNG图像,其透明效果往往无法正常显示。这是因为IE6不支持PNG8之外的PNG透明特性。 为了解决这一...

    ie 下png 透明图片 兼容解决方案

    这些版本的浏览器无法正确显示24位PNG图像的Alpha透明效果,导致网页设计者面临挑战。本篇文章将深入探讨这个问题,并提供多种解决方法。 首先,我们需要理解PNG图像格式。PNG是一种无损压缩的图像格式,支持透明度...

    js_IE6支持png透明解决png_ie6下不透明背景图片

    本文将深入探讨这个问题,并提供JavaScript解决方案来实现IE6下PNG图片的透明显示。 首先,我们需要理解为什么IE6不支持PNG透明。PNG-24格式允许半透明和全透明效果,但IE6只支持8位的PNG-8,而这种格式最多只能有...

    IE6不兼容png透明背景解决方法

    5. **使用PNG-8**:对于不需要多级透明度的图像,可以考虑将PNG-24转换为PNG-8格式,IE6可以正确显示PNG-8的透明效果,尽管颜色层次会受到限制。 每种方法都有其优缺点,开发者应根据项目需求和目标用户群选择合适...

    ie浏览器不能显示png格式图片的问题解决

    在日常工作中,我们可能会遇到在IE浏览器中无法正常显示PNG格式图片的情况。这种情况不仅会影响用户体验,还可能导致项目进度受阻。本文将详细介绍导致该问题的原因,并提供有效的解决方法。 #### 二、原因分析 **...

    处理IE6浏览器显示.png图片透明度文件

    PNG(Portable Network Graphics)是一种支持透明度的图像格式,但在IE6中,它无法正确显示带有alpha透明通道的PNG-24图像,导致图片出现半透明部分变成全黑或者背景颜色无法透过,这被称为“PNG透明问题”。...

Global site tag (gtag.js) - Google Analytics