现在web设计,画面是越来越炫
但是使用了透明的背景图,在IE6下,
在ie78 ff等浏览器显示正常。
解决办法:
body{ background-color:#CCC;}
一般普通写法如下:
div.bg1{ background:url(logo.png) no-repeat center;width:100px; height:100px;}
特殊处理写法如下:
/** Only Used For IE */
*.bg2{filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="logo.png"); width:100px; height:100px;}
/** Only Used For FF,Sa*/
html > body .bg2{ background:url(logo.png) no-repeat center;width:100px; height:100px;}
一下是html调用css写法:
<body>
<div class="bg1">test content</div>
<hr/>
<div class="bg2">test content</div>
</body>
一下为ie7对比显示,上面为一般写法,可以发现ie6处理的不好。
下面为特殊写法,可见比较完美。
分析:
ie系列浏览器可以通过filter 属性来设置背景图,而filter属性在除ie系列浏览器就不生效。
所以这里想到hack处理办法。
IE系列自己特殊的css写法可以通过*,*.bg2 这种css样式只能在ie系列浏览器生效
同样使用html > body .bg2,只有IE系列不生效的写法。
这样可以看出效果在ie ff等下都显示正常
案例1:定义一个样式,给某个div应用这个样式后,div的透明png背景图片自动透明了。(注意两处图片的路径写法不一样,本例中,icon_home.png图片与html文件在相同目录)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
.qq {
height: 90px;
width: 90px;
background-image: url(icon_home.png)!important;/* FF IE7 */
background-repeat: no-repeat;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='icon_home.png'); /* IE6 */
_ background-image: none; /* IE6 */
}
-->
</style>
</head>
<body>
<div class="qq"></div>
</body>
</html>
案例2: 给img定义样式,页面上所有透明png即自动透明了。(这方法只对直接插入的图片有效,对背景图无效)注意,要准备一个透明的小图片transparent.gif,大小不限。必须放在和html相同的目录
请勿大量使用,否则会导致页面打开很慢!!!)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
.mypng img {
azimuth: expression(
this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none",
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "', sizingMethod='image')",
this.src = "transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''),
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "', sizingMethod='crop')",
this.runtimeStyle.backgroundImage = "none")),this.pngSet=true);
}
</style>
</head>
<body>
换成你的png图片
<div class="mypng">
<img src="icon_face_07.png" width="30" height="30" />
<img src="icon_face_10.png" width="30" height="30" />
<img src="icon_face_08.png" width="30" height="30" />
</div>
</body>
</html>
案例3:用JS实现,加上一段js代码后,所有插入的透明png自动透明了.(注意,这方法也是只对直接插入的图片有效,对背景图无效)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="JavaScript">
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.
{
var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])
if ((version >= 5.5) && (document.body.filters))
{
for(var j=0; j<document.images.length; j++)
{
var img = document.images[j]
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
j = j-1
}
}
}
}
window.attachEvent("onload", correctPNG);
</script>
<style type="text/css">
<!--
body {
background-color: #9999CC;
}
-->
</style></head>
<body>
把图片换成你自己的图片
<img src="img/icon_face_03.png" width="30" height="30" /><!--把图片换成你自己的图片 -->
<img src="img/icon_face_05.png" width="30" height="30" />
<img src="img/menu_title_over.png" width="130" height="36" />
</body>
</html>
案例4:
<script language="javascript">
// 修复 IE 下 PNG 图片不能透明显示的问题
function fixPNG(myImage) {
var arVersion = navigator.appVersion.split("MSIE");
var version = parseFloat(arVersion[1]);
if ((version >= 5.5) && (version < 7) && (document.body.filters))
{
var imgID = (myImage.id) ? "id='" + myImage.id + "' " : "";
var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : "";
var imgTitle = (myImage.title) ? "title='" + myImage.title + "' " : "title='" + myImage.alt + "' ";
var imgStyle = "display:inline-block;" + myImage.style.cssText;
var strNewHTML = "<span " + imgID + imgClass + imgTitle
+ " style=\"" + "width:" + myImage.width
+ "px; height:" + myImage.height
+ "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + myImage.src + "\', sizingMethod='scale');\"></span>";
myImage.outerHTML = strNewHTML;
} }
window.onload=function(){
document.getElementById("top").style.height=screen.height/5+"px";
}//
</script>
用法如下:
<img src="logo.png" width="328" height="325" border="0" onload="fixPNG(this)" />
以下是微软官方提供的解决方法:
/*
Correctly handle PNG transparency in Win IE 5.5 & 6.
Copyright 2007 Ignia, LLC
Based in part on code from from http://homepage.ntlworld.com/bobosola.
Use in <HEAD> with DEFER keyword wrapped in conditional comments:
<!--[if lt IE 7]>
<script defer type="text/javascript" src="pngfix.js"></script>
<![endif]-->
*/
function fixPng() {
var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])
if ((version >= 5.5 && version < 7.0) && (document.body.filters)) {
for(var i=0; i<document.images.length; i++) {
var img = document.images[i];
var imgName = img.src.toUpperCase();
if (imgName.indexOf(".PNG") > 0) {
var width = img.width;
var height = img.height;
var sizingMethod = (img.className.toLowerCase().indexOf("scale") >= 0)? "scale" : "image";
img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src.replace('%23', '%2523').replace("'", "%27") + "', sizingMethod='" + sizingMethod + "')";
img.src = "images/blank.gif";
img.width = width;
img.height = height;
}
}
}
}
fixPng();
分享到:
相关推荐
在IT领域,尤其是在网页设计和开发中,"IE6 png背景图片透明"是一个经典的问题,因为Internet Explorer 6(简称IE6)对于PNG格式图像的透明处理与其他现代浏览器存在显著差异。PNG是一种流行的图像格式,支持24位...
Internet Explorer 6(简称IE6)是微软公司早期推出的一款浏览器,由于其对PNG(Portable Network Graphics)图像格式的支持存在局限性,导致在IE6下无法正常显示带有透明效果的PNG图片,这给网页设计师带来了不少...
首先,我们需要理解为什么IE6不支持PNG透明。PNG-24格式允许半透明和全透明效果,但IE6只支持8位的PNG-8,而这种格式最多只能有256种颜色,无法实现半透明。因此,当你在IE6中使用PNG-24格式的图片时,透明部分会...
为了解决这个问题,开发者们开发了一些JavaScript解决方案,使得IE6能够支持PNG背景图片的透明显示。 一、PNG格式与透明性 PNG(Portable Network Graphics)是一种无损压缩的图像文件格式,支持透明度和丰富的色彩...
PNG(Portable Network Graphics)是一种支持透明度的图像格式,但在IE6中,它无法正确显示带有alpha透明通道的PNG-24图像,导致图片出现半透明部分变成全黑或者背景颜色无法透过,这被称为“PNG透明问题”。...
以下是针对“ie6下png透明图片显示不正常”问题的三种最佳解决方案: 1. **CSS滤镜法(AlphaImageLoader Filter)** IE6提供了一个特有的CSS滤镜属性,即`AlphaImageLoader`,可以用来处理PNG透明。在CSS样式中,...
PNG(Portable Network Graphics)是一种支持透明度的图像格式,但在IE6中,对于24位的PNG图片,其背景透明特性无法正确显示,导致图片背景呈现出不透明的黑色或者与页面背景颜色不符,这给网页设计带来了很大的困扰...
首先,问题的根源在于IE6不支持Alpha透明度,即PNG-24格式中的半透明效果。它只部分支持PNG-8格式,而PNG-8只允许256色且不包含完整的Alpha通道。因此,当你尝试在IE6中加载一个PNG-24图像时,图像通常会丢失透明度...
/* 针对IE6的CSS hack,隐藏背景图片,让JavaScript处理 */ } ``` 这样,IE6用户在访问你的网站时,将看到正常透明的PNG图像,而其他现代浏览器则不受影响,保持原生的PNG透明支持。 需要注意的是,虽然IE7.js...
这是因为IE6不支持PNG8之外的PNG透明特性。 为了解决这一问题,开发者通常会采用JavaScript库或特定的技术解决方案来修复IE6下的PNG显示问题。题目中提到的"iepngfix"就是一个专为解决IE6 PNG显示问题的JavaScript...
这些问题主要源于IE6对PNG-24格式的支持不足,导致图片显示不全或出现异常。 为了解决IE6中的PNG阴影问题,我们可以利用一个名为iepngfix.htc的解决方案。iepngfix.htc 是一个行为(Behavior)文件,它是CSS扩展的...
这个库通过JavaScript代码来模拟对PNG透明的支持,从而使得在IE6中可以正确显示带有透明效果的PNG图片。文件“DD_belatedPNG_0.0.8a.js”就是这个库的一个版本,它可以通过引入到HTML页面中,来为IE6提供透明PNG的...
### js修复IE不能显示PNG图片透明背景的方法 #### PNG图片及其特性 PNG(Portable Network Graphics)是一种常用的位图图形格式,以其高效的压缩算法和对透明度的支持而受到广泛青睐。相较于传统的GIF格式,PNG...
然而,IE6在处理PNG-24格式的图片时,无法正确显示透明效果,这就是所谓的"IE6 PNG问题"。 "iepngfix"是一个专为解决这个问题的JavaScript库,由Dean Edwards开发。这个库通过动态修改CSS样式和利用滤镜技术,使得...
这主要源于IE6不支持PNG8以上的Alpha透明度,导致透明PNG图片在该浏览器下显示为黑色背景或者完全不透明。为了解决这个问题,开发者们创造了一种名为“DD_belatedPNG”的JavaScript库,它通过JavaScript模拟了PNG...
PNG是一种无损压缩的图像格式,支持透明度效果,但在IE6上,尤其是对于带有Alpha透明通道的PNG-24格式图片,会出现显示不正常的情况,即所谓的"PNG BUG"。 首先,我们要理解PNG图像的透明特性。PNG-8格式支持256色...
由于IE6对于PNG-24格式图像的处理方式,它无法正确显示带有透明效果的PNG图片,导致这些图片的透明部分在页面上呈现为灰色背景。这个问题对于追求美观和高质量用户体验的网页设计师来说是个大挑战。 PNG是一种无损...
在这个例子中,`#transparentPNG`元素的背景图片将会在IE6中获得透明效果。 需要注意的是,虽然`clear_png.js`提供了一个有效的解决方案,但它可能无法处理所有复杂的透明效果,例如半透明的PNG图片在叠加时的混合...
这样,虽然IE6不支持PNG的透明性,但由于整张图片是PNG,所以不会出现黑边。 以上方法在实际应用中都已被广泛验证有效。在使用时,可以根据项目需求和资源情况选择合适的方法。例如,如果网站主要面向的是仍然使用...
PNG图片在Internet Explorer 6(简称IE6)下的显示问题是一个历史遗留的挑战,由于IE6对PNG格式的不完全支持,导致透明效果和部分渲染出现异常。PNG是一种优秀的无损压缩图像格式,广泛用于网页设计,特别是需要半...