22

css3pie 在幕后发生了什么,使得 IE 可以使用 css3 功能?

4

2 回答 2

30

CSS3Pie网站有很多细节,但我会尝试解释一下。

Internet Explorer 支持称为CSS 行为的功能。这是一个特定于 IE 的功能,它允许您指定在触发 CSS 事件时运行的 Javascript 功能。

为此,它使用带有.HTC扩展名的文件,这基本上是带有自定义 XML 代码的轻包装器的 Javascript 代码。由于 Behaviors 是 IE 特有的特性,它并没有被大量使用,除了少数类似于 CSS3Pie 的 hack,旨在解决浏览器的一些缺点。

在 CSS3Pie 的情况下,它实现了 IE 中缺少的几个功能。这些是边界半径、框阴影和线性渐变。

所有这些事情可以在 IE(甚至更旧的版本)中完成,但是以非标准方式。例如,IE 支持称为 VML 的矢量图形语言(同样,这是特定于 IE 的)。VML 允许您使用 Javascript 绘制图形,它包括创建圆角、渐变填充和阴影的框的功能。

CSS3Pie 结合了这些 IE 特有的特性。作为一种 CSS 行为,它在使用特定 CSS 代码时触发 javascript 代码。此 javascript 在包含 VML 的页面中创建额外的元素,然后对其进行样式设置以匹配 CSS 类适用的元素。然后修改主元素,去掉大部分相关样式,这样就可以看到后面的VML元素的样式了。

归根结底,这是一个黑客行为。它实际上并没有为 IE 添加新功能;它只是使一些现有的 IE 功能以稍微更标准的方式工作。

如果你想深入挖掘,CSS3Pie 是开源的,所以你可以学习它。不过,这是相当复杂的代码,因此您可能会发现查看其他一些可用的(更简单的)HTC 文件会更容易。

在 CSS3Pie 之前,HTMlRemix.com 上已经有一个提供圆角的产品,其工作方式与 CSS3Pie 非常相似。CSS3Pie 是一款更好的软件,但您可能会发现 HTMLRemix 代码更易于理解。

您可能还想查看其他一些内容:

  • 不管是什么:悬停修复 IE6,以便 CSS :悬停功能适用于所有 HTML 元素,而不仅仅是<a>标签。

  • IE PNG Fix使旧版本的 IE 可以更好地处理具有透明度的 PNG 图形。

希望能回答你的问题。

于 2010-10-23T15:14:43.200 回答
1

它只是使用 JavaScript 来模拟缺失的行为。

于 2010-10-23T14:26:22.620 回答