探索网页设计中的黄金比例_654085966_百度空间
“作为浏览器市场的老大”,IE6的罪恶罄竹难书,不支持透明PNG这一“特性”让IE6成为常用浏览器中{wy}的异类。IE特有的CSS滤镜虽然可以做到这一点,但是代码比较复杂,而且使用了该滤镜所属标签下的链接失效。在这里和大家分享一个能让IE6不xx支持透明PNG图片的“傻瓜式”脚本,至于为什么是不xx,我们稍后分析。

IE PNG Fix v1.0 RC4

来源:
预览:
下载:
效果:允许IE6正常显示使用<img>标签插入或以CSS background-image方式写入的透明PNG图象。

使用方法:

1、下载脚本脚本,将其中的iepngfix.htc和blank.gif解压缩到合适的目录内,.htc即,该文件需要在CSS中被调用;blank.gif是一个1×1像素的透明GIF图片,缺少该文件会使<img>标签插入的PNG图象显示为红色的叉烧包。

2、在iepngfix.htc中修改blank.gif的路径,var blankImg =‘blank.gif的正确路径’,这是惟一一个需要修改的配置。

if (typeof blankImg == ‘undefined’) var blankImg = ‘blank.gif’;

3、在css中将需要使用透明PNG的元素与.htc文件关联。

例如:*{behavior: url(iepngfix.htc) }

轻松三步,IE6就能支持透明PNG图片了。

进阶使用:

1、在css中使用通配符“*”调用.htc脚本会对body内所有标签进行处理,加大客户端的资源消耗,延缓页面载入时间。我们可以细化CSS选择器针对某一个标签甚至是某个ID的元素来套用脚本以获得更好的用户体验。

例如:img,div{behavior: url(iepngfix.htc) }
div#header{behavior: url(iepngfix.htc)}

如果无法预见页面中哪些地方需要这个滤镜,还可以将behavior写入成class以便调用。

.pngsupport{behavior: url(iepngfix.htc)}

2、利用IE的条件注释使脚本只应用于IE6及以下版本,减少对IE7用户的影响。

<!–[if lte IE 6]>
*{behavior: url(iepngfix.htc)}
<![endif]–>

3、behavior是IE特有的属性,直接写入样式表将导致页面无法通过W3C的css验证。使用以下脚本写入behavior就可以解决这个问题,前提是页面必须有一个外部样式表,并且位于这个脚本的上面。这种方法的不便之处每次只能添加一个选择符。

<script type=”text/javascript”>
if (document.all && /MSIE (5\.5|6)/.test(navigator.userAgent) &&
document.styleSheets && document.styleSheets[0] && document.styleSheets[0].addRule)
{
document.styleSheets[0].addRule(’*', ‘behavior: url(iepngfix.htc)’);
document.styleSheets[0].addRule(’img’, ‘behavior: url(iepngfix.htc)’);
document.styleSheets[0].addRule(’div’, ‘behavior: url(iepngfix.htc)’);
}
</script>.

缺陷:

在文章开头我就说过这个脚本不是xx的,一起来看看iepngfix.htc都有哪些短版吧。

1、使用PNG透明背景可能导致该元素内部链接无法点击,尤其在链接具有float属性的时候,如:存在于一个浮动列表中的链接。推荐解决方法:使用display:inline代替float来实现块级元素的的横向排列。

2、img标签的插入的透明PNG图象无法使用右键保存,“另存为”只能取到覆盖在上面的blank.gif。什么?不要blank.gif?等着吃叉烧包吧。

3、作为背景的PNG图象无法被平铺,无法被定位,即background-repeat默认为no-repeat,而background-position彻底失效。

4、在页面刚载入的时候我们依旧能看到PNG图象因为IE6不支持而短暂出现的灰边,时间取决页面文件的大小和网络速度。

5、作者建议为使用PNG背景的元素设置一个固定宽度,但在我的使用中尚未发现width:auto会带来什么问题。

6、不支持低于5.5版本的浏览器,不过这个问题已经算不上问题。

==================================================================================================

摘自: http://www.cbmland.com/post/376/transparent-png-in-ie6-utility.html

做Web开发的朋友一定都知道PNG是一个相当不错的图片格式,但是这个好的格式却在IE6时代造成了麻烦,IE6会使透明的PNG的透明部分出现#DBEAED的色彩。透明不了。使得在FF下开发表现很好的界面换成IE浏览就惨不忍睹,又逼着换成GIF,而GIF的假透明在变换背景时造成毛边现象。

刚去了去生成一个WLM的联系方式图标,结果发现的官方的解决方案。;)

核心函数贴出来供分析
/*
Correctly handle PNG transparency in Win IE 5.5 &amp; 6.
Copyright 2007 Ignia, LLC
Based in part on code from from http://homepage.ntlworld.com/bobosola.

Use in with DEFER keyword wrapped in conditional comments:

<script type="text/javascript" defer="true" src="pngfix.js"></script>

*/


function fixPng() {
var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

if ((version &gt;= 5.5 &amp;&amp; version &lt; 7.0) &amp;&amp; (document.body.filters)) {
    for(var i=0; i<document.images.length;></document.images.length;>      var img = document.images[i];
      var imgName = img.src.toUpperCase();
      if (imgName.indexOf(".PNG") &gt; 0) {
        var width = img.width;
        var height = img.height;
        var sizingMethod = (img.className.toLowerCase().indexOf("scale") &gt;= 0)? "scale" : "image";
        img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src.replace('%23', '%2523').replace("'", "%27") + "', sizingMethod='" + sizingMethod + "')";
        img.src="images/blank.gif" mce_src="images/blank.gif";
        img.width = width;
        img.height = height;
        }
      }
    }
}
本文转自:



郑重声明:资讯 【探索网页设计中的黄金比例_654085966_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——