`
huanyq2008
  • 浏览: 171687 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

IE6下png透明处理心得

 
阅读更多

首先说明一下,网上处理IE6下png透明的方法有很多,但无外乎两种情况:一种是使用AlphaImageLoader滤镜,一种是使用微软的VML语言进行绘制。只不过前一种情况有多种触发方式,所以出现了

iepngfix.htc,css样式,onload时触发的多种解决方式。

 

 

一、iepngfix.htc的使用

http://www.twinhelix.com/css/iepngfix/

 

页面加入如下代码

 
<!--[if lt IE 7]>
 <style type="text/css">
img, div{ behavior: url(style/iepngfix.htc) } /**根据需要处理png的地方修改此处**/
 </style>
<![endif]-->

 

<script type="text/javascript" src="iepngfix_tilebg.js"></script> 
 
 
具体使用方式参看该官网
 
 
二、图片onload时触发
  
var isIE6 = (function(){
	var is6 = false;
	var Sys = {};
	var ua = navigator.userAgent.toLowerCase();
	(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : 0;
	if (Sys.ie) {
		var temp = parseInt(Sys.ie);
		if(temp==6) is6=true;
	}
	return is6;
})();
function fixPng(img){
    if (isIE6 && (/\.png$/i).test(img.src)){
       var imgID = (img.id) ? "id='" + img.id + "' " : "" 
       var imgClass = (img.className) ? "class='" + img.className + "' " : "" 
       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 
       + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" 
       + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" 
       + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
       img.outerHTML = strNewHTML;
    } 
}

注意:

此种方法修复png后,img标签被替换为span标签了

可以将该方法扩展下,适应不同的需求

 

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

在IE6下,如果将“检查网页的较新版本”设置为“每次访问网页时”,此时使用滤镜方法修复png透明就会偶尔出现IE6卡死的问题(页面请求数据较多时)。

网速慢得情况下,尤为明显。所以使用上述方法是也只有在设置为“自动”或者“每次启动Internet Explorer时”,判断onload才有效,因为无论如何,给滤镜设置src时都会引起一次请求!

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

 
 三、微软的VML语言进行绘制
 
 
 
这种方法不会引起IE6卡死,但网速慢得时候会渲染很慢,一时半会儿看不到图片,请求超时会有小红叉。
官网提供的源码不支持图片的放大缩小,需要修改下:
将el.vml.image.fill.type = 'tile';改为el.vml.image.fill.type = 'frame';(在315行)
 
建议填充shape时,以图片的原始大小填充。这样才会显示完整。
el.vml.image.shape.style.clip = 'rect('+c.T+'px '+(c.R+fudge)+'px '+c.B+'px '+(c.L+fudge)+'px)';(在243行,第二三个参数传入图片的原始宽,高
 
 
 综上:
1. 处理png问题时需要判断IE6,其它版本浏览器无需处理。
2. 个人建议:在IE6下尽量少使用半透明的png,在IE6下使用gif代替。这样效率也比较高
分享到:
评论

相关推荐

    ie6下 PNG透明处理

    ie6下 PNG透明处理ie6下 PNG透明处理

    IE6下PNG透明代码

    5. **PNG透明修复脚本**:压缩包内的“IE6 PNG处理”脚本可能是一个JavaScript库,如DD_belatedPNG,它通过检测浏览器版本,对IE6下的PNG图片进行特殊处理,使其能够正确显示透明效果。这类脚本通常会分析图片,创建...

    处理ie6下png格式透明效果

    处理完IE6下的PNG透明问题后,可能会遇到一些新的挑战,例如性能影响、图片质量下降或是与其它CSS样式的冲突。因此,在应用解决方案时,应进行充分的测试,确保在保持视觉效果的同时,不影响网站的整体性能和用户...

    IE6下png透明处理脚本(js)

    IE6可以很好地处理PNG8的透明,但对于PNG24的半透明效果则无法正常显示,显示为全透明或全不透明。 针对这个兼容性问题,有以下三种常见的JavaScript解决方案: 1. **DD_belatedPNG.js**: 这是David DeSandro...

    完美解决IE6下png透明

    然而,通过一些技术手段,我们可以“完美解决IE6下PNG背景、图片透明问题”。 首先,我们需要了解PNG图像格式。PNG是一种无损压缩的位图格式,支持透明度设置,包括完全透明和半透明。对于其他现代浏览器,如Fire...

    IE6png透明JS

    为了解决这个问题,开发者们开发了一系列JavaScript库和技巧,使得在IE6下也能实现PNG图像的透明效果。 1. **Alpha Image Loader滤镜**:IE6提供了一个名为"Alpha Image Loader"的滤镜,可以通过CSS样式应用到元素...

    IE6下PNG背景透明的方法

    2. **PNGFix方法**:由Dean Edwards开发的PNGFix.js是一个JavaScript库,它通过JavaScript动态修改页面元素的CSS,使IE6能够处理PNG的透明效果。只需在页面中引入这个脚本,并将需要透明的PNG图像链接到脚本即可。 ...

    IE6 PNG 透明处理方法

    标题“IE6 PNG 透明处理方法”涉及到的是一个在网页设计中常见的问题,尤其是在与旧版Internet Explorer(尤其是IE6)兼容性相关的上下文中。在IE6中,PNG图像格式的透明度支持并不完善,导致许多设计师在创建具有半...

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

    1. **CSS滤镜法**:IE6提供了一种名为`AlphaImageLoader`的CSS滤镜,可以用来处理PNG透明度。通过在CSS中添加如下代码,可以解决大部分问题: ```css .ie6-png-fix { filter: progid:DXImageTransform.Microsoft...

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

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

    IE6_PNG透明终极解决办法

    标题中的“IE6_PNG透明终极解决办法”指的是在Internet Explorer 6(简称IE6)浏览器中处理PNG图片透明度的问题。PNG格式的图片支持Alpha透明通道,允许半透明效果,但在IE6这个古老的浏览器中,对PNG8和PNG24格式的...

    ie6下png透明图片的处理

    而PNG24则提供全彩图像,同时支持Alpha透明,即半透明效果,但IE6在处理这种透明度时会出现问题,通常表现为背景色泄漏或图片显示不全。 为了解决IE6下的PNG透明图片问题,开发者们提出了几种解决方案: 1. **CSS...

    iepng,解决ie6下png透明

    解决ie6下png透明问题 在页面引入这个js文件,让回EvPNG.fix();

    让 IE6 支持 PNG 透明

    在早期的网页设计中,IE6(Internet Explorer 6)浏览器对PNG图像格式的透明支持是有限的,尤其是对于PNG-24格式的图像,它只支持简单的索引颜色透明,而对于真彩色的PNG图像则无法实现透明效果。这给网页设计师带来...

    IE 6 下PNG图片实现透明

    然而,Internet Explorer 6(简称IE6)对PNG格式的支持并不完善,尤其是在处理PNG的Alpha透明效果时存在局限性。这篇教程将详细介绍如何在IE6下实现PNG图片的透明效果。 首先,我们需要理解IE6对PNG透明的支持问题...

    IE6完美解决PNG背景透明

    PNG是一种支持24位颜色和透明度的高质量图像格式,但在IE6中,其透明特性并未得到良好处理。这个问题在设计界尤为头疼,因为设计师们常常需要用到PNG的透明效果来创建复杂的网页布局和图形。 标题"IE6完美解决PNG...

    最好的IE6下png透明图片修复代码

    "最好的IE6下png透明图片修复代码"提供了一个解决方案,使得在Internet Explorer 6(IE6)这种老版本浏览器中,也能正确显示具有透明效果的PNG图像。这个问题的核心在于,IE6只支持PNG-8格式的透明,而不支持PNG-24...

    ie6下png透明

    PNG是一种支持透明度的图像格式,但在IE6下,PNG-24格式的图片会出现全透明或半透明像素变为黑色的问题,这在网页设计中是个显著的障碍。为了解决这一问题,开发者们探索了多种解决方案,主要包括滤镜技术、PNGFix ...

    ie6中png透明解决方案 js

    以上两种方法都可以有效解决IE6下PNG图片透明度的问题,但在实际应用中,考虑到IE6的市场份额逐渐减少,开发者也可能选择仅对现代浏览器提供PNG透明效果,而让IE6用户看到不透明的图片。 这个压缩包中的"ie6中png...

    js实习在IE6下png透明效果

    网页设计在制作网站时时常会遇见IE6的PNG图片透明兼容问题,网上也有很多介绍关于IE6浏览器不显示PNG透明图片的解决方案,但多数是有问题的。应用PNG图片的透明或半透明的特性能做出非常漂亮的网页来。Firefox和...

Global site tag (gtag.js) - Google Analytics