zoukankan      html  css  js  c++  java
  • IE6 PNG透明终极解决方案

    方案7 - DD_belatedPNG解决方案:

    介绍:我们都知道在目前所用的png图片透明解决方案基本都是使用滤镜、xpression解决的、透明gif替代。但是这些方法都有一个缺点,就是不支持CSS中backgrond-position与background-repeat。而这次的js插件使用了微软的VML语言进行绘制且不需要引入其他文件,一个小小的js就可以完美解决png图片bug就连img标签和hover伪类也可以很好的解决。


    目录说明:
    <ignore_js_op>




    思路:
            1、首先下载此方案所用到的文件, <ignore_js_op> DD_belatedPNG.zip (3.76 KB, 下载次数: 4024) 
            2、引入刚下载的js文件,同样由于此js只有使用IE6时才有用,所以为了让我们的页面更加高效的执行,我们可以将上方代码修改如下,只有IE6的时候才调用执行此JavaScript:
            <!--[if IE 6]><script type="text/javascript" src="js/DD_belatedPNG.js"></script><![endif]-->
            3、调用函数,设置参数如下:
                  DD_belatedPNG.fix("#pngImg,#pics,#picsRepeat");

                  其中传入的参数为所使用png图片的标签的ID、类样式和标签名称,同样也可以按照下方这样来写
                  DD_belatedPNG.fix("#content img");
                  此方法则表示#content下的所有img标签透明

                  如果为链接和链接的hover设置透明,那么您按照下方这么来写,在部分版本里面可以不用加入:hover直接写选择器即可,但是为了保险,建议咱们还是加上:hover:
                  DD_belatedPNG.fix("#links,#link:hover");

                  写到这里并且您使用过jQuery或者CSSQuery类库,那么您一定熟悉上面的这种选择方法,总之就是,在CSS中您是如何选择的元素,那么在这个js函数(方法)中传入什么,只不过多个选择的时候,使用逗号隔开即可。


            KwooShung用此方法时的小技巧:如果页面中存在很多png,DD_belatedPNG.fix();函数的参数岂不是很长?我们可以使用这种写法:
                 DD_belatedPNG.fix(".pngFix,.pngFix:hover");

                 如果使用上述的写法,我们的html中只需要在相对应的标签上加入class="pngFix"就行了,如果有多个类样式,按照平时的多个类样式的写法即可class="abc cbc pngFix"

                 使用此方法的时候,我们每次都要加载两个js文件或者写两个<script>标签才行,这样不太好,http请求会增多,那么我们可以打开DD_belatedPNG.js文件,在尾部加入如下代码即可:
                 window.onload = function()
                 {
                              DD_belatedPNG.fix(".pngFix,.pngFix:hover");
                 }

                 这样我们只需要引入此JS,在需要透明的标签上加入class="pngFix"即可,简单 · 方便 · 快捷!


    优点:
            1、CSS代码无需任何修改,按照平时的思路来写即可;
            2、无需配置;
            3、没有多余的gif图片;
            4、支持img;
            5、支持平铺;
            6、支持CSS Sprite;
            8、支持Hover等伪类;


    缺点:
            1、额外加入了js文件(6.39k)和http请求,可以忽略不计;
            2、当文件载入之前,会先暂时呈现灰底;
            3、js文件过多的时候,可能会报错,导致js无法正常运行(这种情况极少出现,可以忽略不计);


    使用情况:
            1、当前6种方法均不能解决问题的时候可考虑;
            2、当png图片过多的时候可考虑,因为png图片太多,使用前面的几个方法,有的会导致CSS代码冗余过多,还不如引入此文件划算;

    DD_belatedPNG解决方案 - DEMO入口

    转载自 http://www.w3cfuns.com/thread-297-1-1.html

    以下css

    #pics,#links{
        width:334px;
    }
    #pics,#picsRepeat{
        background:url(../images/W3CfunsLogo.png) no-repeat;
    }
    #pics,#picsRepeat,#links{
        margin:72px auto;
        height:332px;
    }
    #picsRepeat{
        background-repeat:repeat-x;
    }
    #links{
        background:url(../images/W3CfunsLogoSprite.png) no-repeat;
    }
    #links:hover{
        background-position:0 -332px;
    }

    以下是html

    <!DOCTYPE HTML>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>IE6 PNG透明解决方案合集 - DD_belatedPNG解决方案 - by W3Cfuns.com</title>
            <meta name="keywords" content="IE6,png,透明,解决方案,前端开发,前端开发网,W3Cfuns" />
            <meta name="description" content="W3CSchool,web前端开发起飞区,Web前端开发高手聚集地,教程、资源完全免费!"/>
            <meta name="application-name" content="前端开发网(W3Cfuns.com)"/>
            <meta name="msapplication-tooltip" content="前端开发网(W3Cfuns.com)"/>
            <meta name="author" content="KwooShung"/>
            <link rel="stylesheet" type="text/css" href="style/common.css">
            <link rel="stylesheet" type="text/css" href="style/png.css">
            <!--[if IE 6]>
            <script type="text/javascript" src="js/DD_belatedPNG.js"></script>
            <script language="javascript" type="text/javascript">
            DD_belatedPNG.fix("#pngImg,#pics,#picsRepeat,#links,#link:hover");
            </script>
            <![endif]-->
        </head>
        
        <body>
            <!--PNG内容开始-->
            <h2 class="font24 bold">IE6 PNG透明解决方案合集 - DD_belatedPNG解决方案:</h2>
            <div id="content">
                <strong>目录说明:</strong>
                <div class="menu">
                    <img alt="IE6 PNG 透明 目录说明" src="images/menu.png"/>
                </div>
                <strong>CSS代码:(没什么特别之处,和平时写CSS一样)</strong>
                <div class="code">
                    <img alt="IE6 PNG 透明 代码说明" src="images/code.png"/>
                </div>
                <strong>div背景图片:</strong>
                <div class="demoPlate">
                    <div id="pics" class="pictures"></div>
                </div>
                <strong>div平铺效果:</strong>
                <div class="demoPlate">
                    <div id="picsRepeat" class="pictures"></div>
                </div>
                <strong>img标签:</strong>
                <div class="demoPlate">
                    <img id="pngImg" alt="IE6 PNG 透明 背景图片" src="images/W3CfunsLogo.png"/>
                </div>
                <strong>a伪类hover背景图片且使用CSS Sprite:</strong>
                <div class="demoPlate">
                    <a id="links" href="http://www.W3Cfuns.com/"></a>
                </div>
            </div>
            
        </body>
    </html>

      

    DD_belatedPNG__IE6.zip

  • 相关阅读:
    C++中使用多线程
    hdu 4223 dp 求连续子序列的和的绝对值最小值
    hdu 1372 bfs 计算起点到终点的距离
    hdu 4217 线段树 依次取第几个最小值,求其sum
    心得
    hdu 1175 bfs 按要求进行搜索,是否能到达,抵消两个(相同)棋子
    hdu 4221 greed 注意范围 工作延期,使整个工作时间罚时最少的单个罚时最长的值
    hdu 2844 多重背包 多种硬币,每一种硬币有一点数量,看他能组成多少种钱
    uva LCDDisplay
    hdu 4218 模拟 根据一个圆点和半径画一个圆 注意半径要求
  • 原文地址:https://www.cnblogs.com/ron123/p/3789011.html
Copyright © 2011-2022 走看看