在web前端开发中,经常会遇到需要用背景或图片透明的问题。
首先,目前我们所面临的情况是:
1.在ie7+,firefox,safari,opera这些常用浏览器中,直接使用透明png是没有问题的,但在ie6下却不能透明。
2.ie6目前的时常份额仍然很大,我们必须考虑兼容ie6的问题。
png背景透明解决办法
.pngbackground{
background:url(your.png);
_background: none;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='your.png',sizingMethod='scale');
}
注:当属性前面加_,则只在ie6下被解析。
那
么到目前为止,基本解决了png在ie6下的透明问题,但事情似乎没有这么顺利,很快我们就可以发现,当png作为透明背景的时候,会另自己失去焦点,此
时加在上面的事件如:onmouseover,onclick等事件都失去了作用,这也是滤镜的一个特性,这时候我们需要将该元素的position设置
为relative就可以解决问题,即:
.pngbackground {
position:relative;
background:url(your.png);
_background: none;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='your.png',sizingMethod='scale');
}
png图片解决方案
作为图片插入是用以下代码即可解决。
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
};
};
};
if(navigator.userAgent.indexOf("MSIE")>-1)
{
window.attachEvent("onload", correctPNG);
};
另一种解决方案
在做WEB设计时最让人头痛的就是不同浏览器之间的显示差异,这一点尤其以IE6最让人深恶痛绝。最近就碰到一个非常让人头痛的问题,PNG在IE6下的透明效果失效。研究了差不多三天,终于不完美解决了这个问题。
W3C标准推荐使用PNG图片作为网页首选图像资源,但是漂亮、和谐而且有透明效果的PNG却在IE6下显示得一塌糊涂。为了解决这个问题查阅了很多资料,核心原理是使用IE独有的CSS样式中的behaviro属性,最终用如下方法解决:
1.下载iepngfix.zip,其中有三个文件:iepngfix.htc、iepngfix_tilebg.js、blank.gif,将这几个文件解压出来放到所需要使用png做为CSS背景的网站的根目录下。
2.假定一个div需使用png作为背景,标准的做法是:
#mydiv {
background:url(../img/main.png) no-repeat;
width:739px;
height:366px;
top:12%;
left:20%;
position:absolute;
}
此时该背景能在FF和IE7下正常显示,但是在IE6下会有恐怖的“灰边”。需要使用滤镜来解决。具体做法是使用上面提到的htc文件,在CSS样式的最后定义一个behaviro属性。新的的样式定义为:
#login_main {
background:url(../img/main.png) no-repeat;
width:739px;
height:366px;
top:12%;
left:20%;
position:absolute;
behavior: url("iepngfix.htc");
}
此时要注意url内的路径是相对于index.htm来说的,而不是相对于定义其样式的css文件。
3.在index.htm文件中需要引入上文中提到的第二个javascript文件,使用
<script language="javascript" src="iepngfix_tilebg.js"></script>
插入到<head></head>中
此
时大功告成,使用IE6浏览index.htm文件看看效果,得意的笑吧。顺便提醒一句,对于普通IE6升级成IE7的XP用户,这两种浏览器是无法在同
一个操作系统中共存的,笔者比较愚笨,使用了SUN的virtual box装了一个WIN2K3,幸好virtual
box提供全屏和无缝模式,使得虚拟机用起来还是蛮流畅的。
优化:
方案一:可以发现,当需要用到的
png图片比较多时IE6反应会有些迟钝,因为IE6每次加载需要透明的PNG时都会进行一系列的运算,将png中的alpha透明部分用
blank.gif空白位图代替,可以想象这样的计算规模有多庞大。没办法,这是无法避免的,Vista
和IE7早就出来了,还有非常卓越的FF可供选择,使用IE6的客户所占的份额总会渐渐下降的。观察一下,此时使用IE7打开刚刚index.htm可以
发现,本来非常完美而且不需要做任何改动的页面在IE7下也加载得特别慢,看来behaviro属性也影响到了IE7,让IE7也做了繁重的无用功。
此
时我们的目标是将IE7解放出来,查阅各种浏览器的hack,发现只有IE6在CSS中能够认识下划线“_”,所以我们在刚刚的CSS样式中的
behaviro前加上一个下划线。而这个下划线无论是FF或者IE7都是不会去解析的,这样IE7就会忽略这个CSS属性,既而解放了IE7。
方
案二:既然此次处理的目标就是IE6浏览器,所以在首页中的JS加载语句也可以加上一个小小的改动,加上“<!--[if IE
6]><![endif]-->”标签,既而只针对IE6,而解放了其他浏览器,使它们在页面加载时就忽略
iepngfix_tilebg.js这个文件,提高效率。而可怜的IE6,让它接受暴风骤雨般的CPU消耗吧,没办法,爱莫能助了。在web前端开发中,经常会遇到需要用背景或图片透明的问题。
首先,目前我们所面临的情况是:
1.在ie7+,firefox,safari,opera这些常用浏览器中,直接使用透明png是没有问题的,但在ie6下却不能透明。
2.ie6目前的时常份额仍然很大,我们必须考虑兼容ie6的问题。
png背景透明解决办法
.pngbackground{
background:url(your.png);
_background: none;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='your.png',sizingMethod='scale');
}
注:当属性前面加_,则只在ie6下被解析。
那
么到目前为止,基本解决了png在ie6下的透明问题,但事情似乎没有这么顺利,很快我们就可以发现,当png作为透明背景的时候,会另自己失去焦点,此
时加在上面的事件如:onmouseover,onclick等事件都失去了作用,这也是滤镜的一个特性,这时候我们需要将该元素的position设置
为relative就可以解决问题,即:
.pngbackground {
position:relative;
background:url(your.png);
_background: none;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='your.png',sizingMethod='scale');
}
png图片解决方案
作为图片插入是用以下代码即可解决。
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
};
};
};
if(navigator.userAgent.indexOf("MSIE")>-1)
{
window.attachEvent("onload", correctPNG);
};
另一种解决方案
在做WEB设计时最让人头痛的就是不同浏览器之间的显示差异,这一点尤其以IE6最让人深恶痛绝。最近就碰到一个非常让人头痛的问题,PNG在IE6下的透明效果失效。研究了差不多三天,终于不完美解决了这个问题。
W3C标准推荐使用PNG图片作为网页首选图像资源,但是漂亮、和谐而且有透明效果的PNG却在IE6下显示得一塌糊涂。为了解决这个问题查阅了很多资料,核心原理是使用IE独有的CSS样式中的behaviro属性,最终用如下方法解决:
1.下载iepngfix.zip,其中有三个文件:iepngfix.htc、iepngfix_tilebg.js、blank.gif,将这几个文件解压出来放到所需要使用png做为CSS背景的网站的根目录下。
2.假定一个div需使用png作为背景,标准的做法是:
#mydiv {
background:url(../img/main.png) no-repeat;
width:739px;
height:366px;
top:12%;
left:20%;
position:absolute;
}
此时该背景能在FF和IE7下正常显示,但是在IE6下会有恐怖的“灰边”。需要使用滤镜来解决。具体做法是使用上面提到的htc文件,在CSS样式的最后定义一个behaviro属性。新的的样式定义为:
#login_main {
background:url(../img/main.png) no-repeat;
width:739px;
height:366px;
top:12%;
left:20%;
position:absolute;
behavior: url("iepngfix.htc");
}
此时要注意url内的路径是相对于index.htm来说的,而不是相对于定义其样式的css文件。
3.在index.htm文件中需要引入上文中提到的第二个javascript文件,使用
<script language="javascript" src="iepngfix_tilebg.js"></script>
插入到<head></head>中
此
时大功告成,使用IE6浏览index.htm文件看看效果,得意的笑吧。顺便提醒一句,对于普通IE6升级成IE7的XP用户,这两种浏览器是无法在同
一个操作系统中共存的,笔者比较愚笨,使用了SUN的virtual box装了一个WIN2K3,幸好virtual
box提供全屏和无缝模式,使得虚拟机用起来还是蛮流畅的。
优化:
方案一:可以发现,当需要用到的
png图片比较多时IE6反应会有些迟钝,因为IE6每次加载需要透明的PNG时都会进行一系列的运算,将png中的alpha透明部分用
blank.gif空白位图代替,可以想象这样的计算规模有多庞大。没办法,这是无法避免的,Vista
和IE7早就出来了,还有非常卓越的FF可供选择,使用IE6的客户所占的份额总会渐渐下降的。观察一下,此时使用IE7打开刚刚index.htm可以
发现,本来非常完美而且不需要做任何改动的页面在IE7下也加载得特别慢,看来behaviro属性也影响到了IE7,让IE7也做了繁重的无用功。
此
时我们的目标是将IE7解放出来,查阅各种浏览器的hack,发现只有IE6在CSS中能够认识下划线“_”,所以我们在刚刚的CSS样式中的
behaviro前加上一个下划线。而这个下划线无论是FF或者IE7都是不会去解析的,这样IE7就会忽略这个CSS属性,既而解放了IE7。
方
案二:既然此次处理的目标就是IE6浏览器,所以在首页中的JS加载语句也可以加上一个小小的改动,加上“<!--[if IE
6]><![endif]-->”标签,既而只针对IE6,而解放了其他浏览器,使它们在页面加载时就忽略
iepngfix_tilebg.js这个文件,提高效率。而可怜的IE6,让它接受暴风骤雨般的CPU消耗吧,没办法,爱莫能助了。
相关推荐
IE6不兼容png透明背景解决方法
IE6不兼容png透明背景解决方法,有效解决IE6下 透明图片浅灰背景的问题
解决IE6下PNG图片背景不透明的三种方法(CSS/JS/JQuery)
半透明效果有时候会给页面增加不少色彩,特别是Vista盛行之后,半透明效果更加受推崇。在诸多可用于Web浏览的图片格式中,只有PNG格式和Gif格式可以实现半透明效果,不过Gif格式的半透明效果很有限,而且会大范围失真,所以目前最流行的方式就是使用PNG格式图片。不过可惜的是,在Internet Explorer 6及以下版本中都不支持PNG半透明效果(至少是不直接支持)。不过幸好Mic...
完美解决png在ie6兼容问题完整示例
完美解决png在ie6兼容问题完整示例,采用js
浏览器不支持PNG图片背景透明的解决办法
img.png { background-image: expression( this.runtimeStyle.backgroundImage = "none", this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + thi
完美解决IE中PNG格式透明背景图片显示异常的各种方法【Z】
NG半透明背景图片效果 PNG图片在网页设计中扮演着一个很重要的角色,利用PNG图片的特点可以制作出实用,绚丽的效果,可是对于PNG图片的支持却不是很理想,Firefox和Opera对PNG支持的比较好,特别是Firefox浏览器。可是IE却不理PNG,使得设计者无法很随意的使用png图片。 IE5.5+的 AlphaImageLoader滤镜为通向png提供了一个道路,如果他载入的是PN...
electron制作聊天界面(仿制qq)
效果图: 样式使用scss和flex布局 这也是制作IM系统的最后一个界面了!在制作之前参考了qq和千牛 需要注意的点 qq将滚动条美化了 而且在无操作的情况下是不会显示的 滚动条美化 ::-webkit-scrollbar { /*滚动条整体样式*/ width: 5px; /*高宽分别对应横竖滚动条的尺寸*/ heig...
SVG动态创建image失败解决方案
在用JS动态创建SVG标签的时候,像g标签,circle标签,rect标签等都可以正确创建并显示,但是image标签却总是不能显示。我的初始代码如下:var svgNS = 'http://www.w3.org/2000/svg'; var oImg = document.createElementNS(svgNS, 'image'); oImg.setAttribute('xlink:href',
IE6的BUG列表
1.IE6下png图片透明2.IE6不兼容line-height3.IE6下DIV最小高度4.IE6 中的最大最小宽度和高度5.IE6 Select Bug6.img图片元素有多余空白7.IE6不支持position:fixed 8.IE6绝对定位元素的1px间距 9.Opacity(透明度)10.Double Margin Bug(双倍margin)11.3px Gap Bug aka Tex...
IE6下PNG图片背景透明的处理方法
<br />E6下PNG背景透明的显示问题 <br />PNG格式比起GIF来表现色彩更丰富,特别是表现渐变以及背景透明的渐变要比GIF格式出色很多,目前,最新的浏览器基本上都支持PNG格式。但是IE6不支持PNG背景透明,会显示一个灰色的框。<br />IE6下PNG背景透明的解决办法<br />一.gif替换png<br />.pngImg { background:url(image.png); _background:url(image.gif);}<br />注意上文的_号,目前IE7,8以及Fi
ie6下background png 透明问题
PNG 图片在网站设计中是不可或缺的部分,最大的特点应该在于 PNG 可以无损压缩,而且还可以设置透明,对于增强网站的图片色彩效果有重要的作用。 但为什么 PNG 图片却没有 GIF 和 JPG 图片的使用来得广泛呢,这个祸因应归属于微软的 IE 浏览器(Firefox 和 Opera 对 PNG 支持的比较好,而现在浏览器的主流IE6 却无法很好的支持)。不过微软在最近也开始改过自新了,新
解决PNG图片透明IE不兼容的问题
图片透明可以有两种,一种是GIF透明,一种是PNG透明,如果用GIF透明的话,在所有浏览器中都兼容,但是GIF图片像素低,图片产生锯齿。不管你怎么保存,图片都不能达到客户想要的效果,这个时候就可以用PNGL图片透明,图片像素高,不易失真。但PNG图片透明IE6却显示一个蓝色的背景,IE7显示白色的背景,只有IE8是OK的。解决PNG图片透明IE不兼容的问题我这里有两种方法。 1:直接插入图片是用以
解决png图片在IE6背景无法透明不兼容解决方法
做页面经常碰到浏览器兼容问题,其中最蛋疼的就是IE6下面一堆问题,其中png图片无法透明就很让人纠结 网上有好多解决方法,大体都是一样的思路;以前有一种方法就是用gif图片,IE6下面是支持gif图片背景透明的 但是有时候gif图片在IE6下面会有毛边,显示效果不好; 可以使用滤镜来使IE6也完美使用Png图片; 代码CSS: filter : progid:DXImageTr...
IE使用png透明图片的方法
应用PNG图片的透明或半透明的特性能做出非常漂亮的网页来。Firefox和Opera对PNG的支持非常的好,都是IE却无视PNG图片这一特性的“存在”,虽然IE7已经支持都是IE6还是不行。查了一些资料,基本解决了这一问题,准备应用到PJskin上。虽然有让IE6支持PNG透明背景的JS程序,都是不是很方便,还是用CSS来实现的好。使用到的就是:IE5.5+的AlphaImageLoader滤镜
解决IE6中png图片透明的问题的方法
看了群的聊天记录,一直有人问IE6下png图片怎么透明,其实有关png透明的文章网上有很多,方法也有很多,这里就小小的总结一下: 1、使用GIF代替 .pngImg { background:url(...
解决IE6下透明PNG图片有灰底
FF和IE7已经直接支持透明的png图了,下面这个主要是解决IE6下透明PNG图片有灰底的=============================================================================此效果简单,。。。。相当不错 推荐style="FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/fl.png')"语法:filter : progid:DXImageTra
ie6 png 图片背景透明解决方法
我本来以为 我对程序 的菜菜脑袋可能解决不了ie6 png图片的透明背景不兼容问题了,只能使用所谓的 在保存png 图片时,保存为文件更小,有gif 效果,被ie6支持的png8 索引色透明度格式 但是png8 支持的色彩位数实在是太低,很多时候直接处理的图片保存出来不是有锯齿,就是有毛边,放在网页上一点都不平滑,真是令人抓狂。 png24 png32 虽然支持了更多的色彩位数,但是ps 的
解决PNG图片在IE6中背景不透明方法_解决IE6中PNG背景不透明方法
1、解决PNG图片在IE6中背景不透明的CSS与JS代码 function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6. { var arVersion = navigator.appVersion.split("MSIE") var version = parseFloat(arVersion[1]
解决IE6中PNG透明显示灰底的8种方法
方案一 - 滤镜解决方案 介绍:滤镜从IE4.0被微软正式引入,所以我们可以使用滤镜解决IE6的PNG透明问题,滤镜不仅可以实现目前CSS3的一些旋转效果而且还可以引入图片。注意:此方法在部分版本的IETest中无效,建议使用标准的IE6来进行测试! 思路:1、书写正常的CSS代码,通过background导入图片,这样所有的浏览器均使用了此PNG图片; background:url(....
208


&spm=1001.2101.3001.11974&articleId=5880643&d=1&t=3&u=969543cb4e7849168b61c57fcf457173)

被折叠的 条评论
为什么被折叠?



