javascript和JQuery焦点图和代码特效大全
当前最流行的开源CMS网站系统大全
当前位置:主页 > WEB前端 > CSS-HTML >

八种方案解决IE6下PNG透明图片问题

来源:IT技术网编辑:香独秀发布于:2013-07-24人围观图片PNGIE6透明方案

IE6中的bug令很多Web前端开发人员实为头 疼,然而在众多的Bug中最令人抓狂的就是IE对png图片的不支持,IT技术网把当前最流行最实用的IE6支持PNG图片的方案整理到本文,以供大家学习参考!

方案1 - 滤镜解决方案:

介绍:滤镜从IE4.0被微软正式引入,所以我们可以使用滤镜解决IE6的PNG透明问题,滤镜不仅可以实现目前CSS3的一些旋转效果而且还可以引入图片。注意:此方法在部分版本的IETest中无效,建议使用标准的IE6来进行测试!

思路:
        1、书写正常的CSS代码,通过background导入图片,这样所有的浏览器均使用了此PNG图片;

background:url(../images/W3CfunsLogo.png);

        2、通过滤镜对引入图片,滤镜引入图片的时候是相对于HTML文件,而不是相对于CSS文件,语法如下:

ilter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="images/W3CfunsLogo.png");

代码写到这里,我们放到IE6下测试后发现IE6还是没有透明,因为我们虽然设置了滤镜引入图片,但是background也同样加载了此图片,又因为background的图层比滤镜设置的高,所以才没有显示出来.

        3、所以我们得出的结论就是当我们使用filter的时候,就要使background失效,因此我们可以使用CSSHack来解决此问题,只需要将IE6的background:none;即可,那么可以得出的代码如下:

  _background:none; /*此代码只有IE6识别*/

又因为filter只在IE6下让其产生作用,IE6+版本的浏览器虽然也识别filter,但是png透明是没有灰底问题的,所以我们同样将filter也加上IE6 Hack即可。

        4、最终我们可以得到如下代码:

              #pics
              {
                      background:url(../images/www.ahuing.com.png) no-repeat;

                      /*以下为IE6设置PNG透明代码*/
                      _background:none;
                      _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="images/www.ahuing.com.png");
              }

        提示:如果需要使其支持链接的hover,那么需要在CSS中定义:cursor:pointer;使其呈现手型,否则将为默认的鼠标状态。

优点:
        1、绿色无插件;
        2、效率高,速度快;
        3、网速慢的时候,不会出现先灰底再透明的情况,支持远程图片;
        4、支持Hover等伪类,但是得使用两张图片,网速慢的情况下,会导致第二张图片暂时无法显示,因为还没有完全载入;

缺点:
        1、不支持平铺,虽然filter有sizingMethod="scale", 拉伸缩放模式,但是图片会变形,如果单纯的颜色或简单的渐变色还能横向平铺;
        2、不支持Img标签;
        3、不支持CSS Sprite;

使用情况:
        1、当没有img引入png时可考虑;
        2、当没有CSS Sprite需求时可考虑;
        3、当没有平铺需求时候可考虑;

图片,PNG,IE6,相关的文章
有时间的话来看看IT界的突发事件