当我在自己的网页设计项目中尝试使用据有透明度的PNG图片的各种方法时,我开始寻找各种能让PNG图片在IE6下正常工作的方法。我们都知道,IE6对于PNG的不透明度支持的并不好。暴风彬彬曾经发表过CSS完美实现垂直居中的方法,如果您有兴趣也可以参考。
下载.htc文件,然后指定你希望实现PNG支持的那个元素/标签。想了解更多的话,这有在线Demo和安装说明.(都是英文)
这是我印象中修复IE6的PNG问题的最好的JavaScript方法。如果想了解更详细的使用方法,可以查看24ways.org的教程
我偶然发现这个简单的Google Code,但这个脚本的缺陷是只能修复名为*-trans.png的PNG图片。还有一个遗憾之处,就是透明背景图片无法使用background-repeat平铺,也无法使用background-position来定位。
我无意中发现了这个可以让工作更加有效的方法,使用了CSS和IE的条件标签。
步骤一:HTML
我们可以先创建一个HTML文件,然后添加一个类名为”vehicles”的空div。
<div class=”vehicles”></div>
步骤二:样式表
下面来创建一个名为style.css的样式表并添加以下代码:
body {
background: url(body-bg.jpg); /* 添加基本背景图 */
}
.vehicles {
width: 500px;
height: 176px;
background: url(vehicles.png) no-repeat; /* 为vehicles类添加背景图 */
}
步骤三:IE样式表
下面我们来创建另一个样式表,命名为IE.css。现在,我们都知道IE讨厌PNG文件,那我们就要在这里施展魔法了:
/* 注:我在vehicles类名前添加了”html”, 我这样做就不会使background属性与另一个样式表冲突了. */
html .vehicles {
background: none; /* 隐藏当前背景图从而使用后面的滤镜重置它 */
width: 500px; /* 必须指定宽度 */
height: 176px; /* 必须指定高度 */
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src=’vehicles.png’);
}
步骤四:IE条件注释
这是最后一步。现在我们回到步骤一中的html文件,然后我们来读取之前创建的所有样式表。
在你的文件顶部中添加以下代码:
<link rel=”stylesheet” href=”styles.css” type=”text/css” />
<!–[if IE 6]>
<link rel=”stylesheet” href=”IE.css” type=”text/css” />
<![endif]–>
*注:我在第二行使用了IE条件注释,这就是为什么我没有将两种样式放在同一个样式表中,而把专门用于IE6的样式表单独定义的原因。这样更有利于日后管理。
这些就是我总结的几个解决IE6下PNG问题的方法,优点在于遵从XHTML,而且缩减了页面的代码量。
联系客服