让IE6完美支持PNG图片透明的方法详解
https://www.yqxbc.com win10系统 发布时间:2015-08-29 00:00 来源:一起学编程 浏览:加载中

  前天用IE6看我的个人网站,发现LOGO的背景图片有点怪异,本来是半透明的,在IE8下表现得很完美,可是在IE6下却变成有灰边,这才记起自己的LOGO是做成PNG格式的,ie6下不能支持PNG的半透明,本来该透明的地方都被灰色替代了。以前利用一段JS解决过,但忘记代码如何写了。今天从阿当的博客看到如何利用CSS+滤镜来解决这个问题,经仔细研究之下,发现他的方法非常简单实用,但是代码存在歧义,在此特别指出说明一下:

  阿当是这样写的:

 

#img{width:200px;height:200px;background:url(123.png);_background-image:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='123.png',sizingMethod='crop');}


  当时我把LOGO写成一个DIV的背景图,背景图片路径是“../images/123.png”,同理后面的AlphaImageLoader的图片路径我也写成“../images/123.png”,但是回到页面查看,图片就直接不见了。在不停调试之后才发现原来这里的AlphaImageLoader图片路径有问题,如果图片在根目录下就可以生效,如果放在images文件夹下就失效。

  上网搜索了下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)格式的图片完全透明区域后面的内容。

  所以,在使用此方法解决此问题时,请注意:

  1、该滤镜中的src属性最好取绝对路径,如果取相对路径的话必须是相对于当前网页路径,而不是我们习惯的“相对于css的路径”!

  2、AlphaImageLoader滤镜会导致该区域的链接和按钮无效,解决的办法是为链接或按钮添加“position:relative;”这样条代码,使其相对浮动。

  3、为了使滤镜起作用,应该为容器设置宽度和高度值。

  4、由于IE7是支持png透明的,所以为了页面执行速度,可以让该css规则对IE7不起作用。为了达到这个目的,完全可以使用“* html”来屏蔽IE7。