IE使用png透明图片的方法

转载 2007年09月17日 17:52:00
应用PNG图片的透明或半透明的特性能做出非常漂亮的网页来。Firefox和Opera对PNG的支持非常的好,都是IE却无视PNG图片这一特性的“存在”,虽然IE7已经支持都是IE6还是不行。查了一些资料,基本解决了这一问题,准备应用到PJskin上。
虽然有让IE6支持PNG透明背景的JS程序,都是不是很方便,还是用CSS来实现的好。使用到的就是:
IE5.5+的AlphaImageLoader滤镜
引用内容 引用内容
语法:
filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )
属性:
enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false
      true : 默认值。滤镜激活。
      false : 滤镜被禁止。

sizingMethod : 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。 crop : 剪切图片以适应对象尺寸。
        image : 默认值。增大或减小对象的尺寸边界以适应图片的尺寸。
        scale : 缩放图片以适应对象的尺寸边界。
        src : 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。

说明:
在对象容器边界内,在对象的背景和内容之间显示一张图片。并提供对此图片的剪切和改变尺寸的操作。如果载入的是PNG(Portable Network Graphics)格式,则0%-100%的透明度也被提供。
PNG(Portable Network Graphics)格式的图片的透明度不妨碍你选择文本。也就是说,你可以选择显示在PNG(Portable Network Graphics)格式的图片完全透明区域后面的内容。


了解了以上的内容,可以写一段简单的CSS代码(还不是完全正确的代码):
引用内容 引用内容
#div1 {
height: 600px;
width: 260px;
padding: 20px;
background-repeat: repeat;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png"

}

这段简单的CSS代码就可以在IE中正常的显示PNG透明背景,但是会发现在FF下不会出现背景,分析原因:
AlphaImageLoader滤镜只能被IE支持,FF是不支持该滤镜的
有些初次写的时候很多人会这样:
在代码中添加这样一段: background-image: url(bj1.png);
添加这样一段代码虽然能解决FF下的问题,都是IE又出现问题:新的背景会覆盖在滤镜的背景之上,导致滤镜显示无效,这时候就用到IE和FF对CSS读取的区别特性了:
Firefox、Opera等完全支持PNG透明图片的浏览器也支持子选择器(>),而IE不识别(包括IE7),所有我们可以通过这来定义Firefox、Opera等浏览器中PNG图片的样式。代码如下:
程序代码 程序代码
html>body #div1 {
background-repeat: repeat;background-image: url(bj1.png);
}


同时,我们通过只有IE才识别的通配符(*),来定义IE浏览器中的滤镜。代码如下:
程序代码 程序代码
* #div1 {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png")

}


而#div1 {}就放一些IE和FF共用的设置来减少代码文件的大小。最终就是这样:
程序代码 程序代码
#div1 {
height: 600px;
width: 260px;
padding: 20px;
background-repeat: repeat;


}

html>body #div1 {
background-repeat: repeat;background-image: url(bj1.png);
}
* #div1 {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png")

}


需要注意的是:AlphaImageLoader滤镜会导致该区域的链接和按钮无效,解决的办法是为链接或按钮添加:position: relative;这样条代码,使其相对浮动。AlphaImageLoader无法设置背景的重复,所以对图片的切图精度会有很高的精确度要求。 

PNG透明图片在IE浏览器中正确显示

png图片有很好的品质。阴影效果也不会有杂边,很流畅。如果插入网页的话可以给网站内容增色不少!更重要的是在不增加图片容量大小的情况下提高了页面的图片的质量。对于有复杂背景,如:在有颜色过度背景上插入不...
  • haibo0668
  • haibo0668
  • 2016年06月02日 12:53
  • 558

html学习笔记-解决ie6中png图片透明不能正常显示问题

在ie6中png-24图片不兼容,透明背景显示有问题 比如此图 在火狐中正常显示 但是在ie6中显示如下 可以明显看出透明背景不能正常显示 测试代码 html> ...
  • qq_37471298
  • qq_37471298
  • 2018年01月30日 15:00
  • 53

几个ie6样式兼容性:1px高的块容器、PNG透明图像、负边距时后遮盖前、边框不显示等问题

一、IE6下的1px高的块容器。 在工作中,美工经常会设计出1px高的线条来装饰页面。 如果是单色的线,可用border来实现,如果有渐变或者1PX的图案,那只好用盒容器加背景图了。 对于IE7及以上...
  • kevinhjing
  • kevinhjing
  • 2015年08月17日 11:20
  • 1027

解决IE7&IE8 png 透明度的问题以及文字透明模糊

在学习dojo的dom-style.js中遇到了设置opacity的问题,
  • cexo425
  • cexo425
  • 2014年09月17日 13:47
  • 3397

解决IE6 的 PNG透明 JS插件

DD_belatedPNG 使用方法: DD_belatedPNG.fix('.tel,.head_content'); 括号里的是样式选择器,...
  • chenmoquan
  • chenmoquan
  • 2013年04月17日 15:06
  • 6277

PHP创建透明PNG图

原文地址:http://www.jb51.net/article/51991.htm 经鉴定可用,代码如下:
  • leejianjun
  • leejianjun
  • 2016年12月30日 11:46
  • 1182

制作png格式透明图片的简易方法

photoshp之类的专业软件太复杂,其实,制作透明图标有比较简易的方法,用PowerPoint或者国产的WPSyanshi...
  • zhouyingge1104
  • zhouyingge1104
  • 2014年04月25日 11:22
  • 27459

MFC环境下显示透明PNG图片

工作需要又得使用MFC变调试软件。
  • wangsenmm
  • wangsenmm
  • 2014年04月25日 16:30
  • 2538

将png图片背景色置为透明

去除背景成为透明:如果是单纯颜色的背景色,打开图象,选“魔术棒”工具,将容差设为30左右,点背景色,形成选 区。再选“魔术橡皮擦工具”,点选区,背景就透明了。再点“编辑”里的“清除”,清除干净残余背景...
  • lcfeng1982
  • lcfeng1982
  • 2011年11月17日 12:07
  • 3500

VB 显示PNG图片(适合透明窗体和一般窗体)

Private Declare Function GdiplusStartup Lib "gdiplus" (token As Long, inputbuf As GdiplusStartupInpu...
  • kalision
  • kalision
  • 2012年02月06日 18:23
  • 6759
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IE使用png透明图片的方法
举报原因:
原因补充:

(最多只允许输入30个字)