应用 PNG Hack 的不同技术

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的各个阶段提供云产品。立即开始使用 200 美元的免费积分!

Alpha 透明 PNG(对于那些从 Photoshop 保存的人来说,称为“PNG-24”)对网页设计师来说是一件了不起的事情。我们可以创建一个带有阴影的按钮,它会将阴影叠加在下面任何地方,即使背景发生变化。这看起来可能微不足道,但实际上并非如此。Alpha 透明度为设计师打开的可能性很多。问题是,正如您可能意识到的,Internet Explorer(IE < v7)不支持 Alpha 透明 PNG。您越深入思考,就会发现越令人沮丧。幸运的是,多年来出现了一些方法来帮助我们解决这些旧版本的 IE。以下是其中一些技术概述。

注意:所有这些技术最终都会使用 Microsoft AlphaImageLoader 过滤器强制透明度。这些技术只在如何以及何时应用该过滤器方面有所不同。

 

对特定 CSS 类使用 AlphaImageLoader 行为

alphaimageloader.png
Internet Explorer 支持一种名为“行为”属性的“自定义扩展”,该属性可以扩展 CSS。其他主要浏览器都不支持此功能,因此您可以利用浏览器特异性,仅对需要 PNG Hack 的浏览器强制执行此操作。此技术使用一大块非验证 CSS,该 CSS 本质上使用 AlphaImageLoader 过滤器强制执行透明度。

请记住,您可能需要在两个地方应用透明度:内联图形 (<img>) 和 CSS 背景图像。使用此技术,您可以将行为应用于特定 CSS 类(例如“.png”),然后根据需要选择性地应用该类,也可以将行为全局应用于所有 img 元素。

还要注意,虽然这适用于 CSS 背景图像,但适用于以任何方式重复或定位的图像。

有关此技术的更多信息
Komodo Media:使用背景图像替换图像
SNIPPLR:对 IE 使用过滤器,对 Mozilla 使用属性选择器

 

行为和引用 HTC 文件

htc-method.png
此技术最棒的一点是,您只需在 CSS 文件中使用一行引用“.htc”文件即可。行为会神奇地将必要的 Microsoft 专有代码应用于所需页面元素,您将在 IE 中获得 Alpha 透明 PNG。

有关此技术的更多信息
Twin Helix:IE PNG 修复

 

使用 Javascript

js-ail.png
由于 Javascript 具有神奇的能力来监控和浏览页面上的所有元素,因此它非常适合用于查找和应用网站上的任何类。选择这种方法有两个非常令人信服的原因。首先,您可以有条件地应用 Javascript,使其仅针对需要它的 IE 版本加载。第二,它与 HTC 方法一样“设置一次,一劳永逸”。第三,它没有任何无效之处,因此您无需担心代码或 CSS 无法通过验证。第四,Javascript 能够看到添加到页面的“新”内容(例如 AJAX)并相应地做出反应。以前的技术只对页面的初始加载有效。

有关此技术的更多信息
24 Ways:超级轻量级
Google Code 上的 PNGHack