您当前位于:
项目兼容问题 ——> 浏览器常见兼容问题-IE6的png透明问题的解决方法
浏览器常见兼容问题-IE6的png透明问题的解决方法
2015/05/04 11:58:58
|
作者:HTML5学堂(码匠)
|
分类:项目兼容问题
|
关键词:浏览器兼容,IE6,png,透明,滤镜
PNG兼容IE6解决方法
HTML5学堂:在项目开发中,PNG图片格式也是经常遇到,但是在IE6上存在兼容问题,也是让大家很头疼的问题。本文给大家介绍了三种方法,来解决PNG图片格式在IE6上的兼容问题,有图有真相哦~赶紧来看看~
IE6不兼容png图片,确实让网页的图片质量大大下降,为了兼容万恶的IE6,总结了一下三种方法:
①通过CSS滤镜使背景图的PNG对IE6进行兼容。
②给img定义样式,页面上所有透明png即自动透明了。
③通过JS,插入一段代码,实现img标签png兼容IE6的问题。
大家先看一下没有做兼容IE6之前的效果,看着就头疼
1、通过CSS滤镜使背景图的PNG对IE6进行兼容
定义一个样式,给某个div应用这个样式后,div的透明png背景图片自动透明了。
-
<!doctype html>
-
<html>
-
<head>
-
<meta charset="utf-8">
-
<title>png兼容IE6问题解决方法</title>
-
<style>
-
body{background: lightblue;}
-
.png{
-
width: 550px;
-
height: 500px;
-
background-image: url(pic.png)!important;/* FF IE7 */
-
background-repeat: no-repeat;
-
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='pic.png'); /*IE6*/
-
_ background-image: none; /* IE6 */
-
overflow: hidden;
-
}
-
</style>
-
</head>
-
<body>
-
<div class="png">
-
<div>通过CSS滤镜使背景图的PNG对IE6进行兼容</div>
-
</div>
-
</body>
-
</html>
欢迎沟通交流~HTML5学堂
2、给img定义样式,页面上所有透明png即自动透明了。
注意:这方法只对直接插入的图片有效,对背景图无效。要准备一个透明的小图片transparent.gif,大小不限,并将gif的图片放在跟png图片一个文件夹里。请勿大量使用,否则会导致页面打开很慢!!!不过这种方法设置图片的不能控制其大小。
-
<!doctype html>
-
<html>
-
<head>
-
<meta charset="utf-8">
-
<title>png兼容IE6问题解决方法</title>
-
<style>
-
body{background: lightblue;}
-
.imgpng 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>
-
<div class="imgpng">
-
<img src="pic.png" />
-
img标签你就在IE6下显灵吧
-
<img src="pic.png" />
-
</div>
-
</body>
-
</html>
3、通过JS,插入一段代码,实现img标签png兼容IE6的问题
-
<!doctype html>
-
<html>
-
<head>
-
<meta charset="utf-8">
-
<title>png兼容IE6问题解决方法</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>
-
body{background: lightblue;}
-
div img{bottom: 3px solid yellow;}
-
</style>
-
</head>
-
<body>
-
<div class="imgpng">
-
<img src="pic.png"/>
-
</div>
-
</body>
-
</html>
总结了这三种方法,都亲自试验过了,有图有真相,大家可以根据自己的实际情况进行选择。
欢迎沟通交流~HTML5学堂
阅读:701