css3pie在幕后发生了什么,使得IE可以使用css3特性?
发布于 2010-10-23 23:14:43
CSS3Pie website有很多细节,但我将尝试解释一下。
Internet Explorer支持一种称为CSS行为的功能。这是特定于IE的功能,允许您指定在触发CSS事件时运行的Javascript功能。
为此,它使用带有.HTC扩展名的文件,这基本上是带有自定义XML码的轻量级包装器的Javascript代码。由于Behaviors是IE特有的特性,所以它并没有被广泛使用,除了一些类似于CSS3Pie的黑客攻击之外,这些攻击都是为了解决浏览器的一些缺点而设计的。
在CSS3Pie的情况下,它实现了IE中缺少的几个功能。它们是边界半径、长方体阴影和线性渐变。
所有这些事情都可以在IE (甚至更老的版本)中完成,但以非标准的方式进行。例如,IE支持一种称为VML的矢量图形语言(同样,这是IE特有的)。VML允许您使用Javascript绘制图形,并包括创建圆角框、渐变填充框和阴影框的函数。
CSS3Pie结合了这些特定于IE的功能。作为CSS行为,当使用特定的CSS代码时,它会触发javascript代码。此javascript在包含VML的页面中创建额外的元素,然后设置样式以匹配CSS类所应用的元素。然后修改main元素以删除大多数相关样式,以便可以看到它后面的VML元素的样式。
归根结底,这是一种黑客行为。它实际上并没有向IE添加新的功能;它只是使一些现有的IE功能以一种稍微更标准的方式工作。
如果你想深入挖掘,CSS3Pie是开源的,所以你可以研究它。不过,这是非常复杂的代码,所以您可能会发现查看其他(更简单的) HTC文件会更容易一些。
在CSS3Pie之前,已经有一个提供圆角的available from HTMlRemix.com,它的工作方式与CSS3Pie非常相似。CSS3Pie是一个更好的软件,但是您可能会发现HTMLRemix代码更容易理解。
还有其他一些你可能想要研究的:
使旧版本的IE能够更好地使用IE6处理<a>图形
希望这能回答你的问题。
发布于 2010-10-23 22:26:23
它只是使用JavaScript来模拟缺失的行为。
https://stackoverflow.com/questions/4000034
复制相似问题