IE10 / 11使用转换:-webkit-transform?

时间:2014-03-17 14:38:39

标签: css css3 internet-explorer css-transitions vendor-prefix

请参阅IE10或11中的this JSBin

如果您检查#test元素,您会看到它将转换属性显示为-webkit-transform(并且不会发生转换)。如果您注释掉transition: -webkit-transform;声明,如here所示,则转换有效。

为什么IE不将供应商前缀值作为无效的属性值丢弃?顺便提一下,如果我在Chrome上执行类似的操作 - 比如说-ms-transition之后-webkit-transition - 它会按原样删除它,并且只使用-webkit-transition声明。似乎仅在IE上这是一个问题。

1 个答案:

答案 0 :(得分:8)

我刚刚对此做了一些研究,它看起来更像是一个Chrome漏洞,而不是关于IE的东西。

以下transition-propertyspec关于无法识别和无法设置动画的属性的说明:

  

如果列出的标识符之一不是可识别的属性名称或者不是可动画属性,则实现必须仍然使用其各自索引处的持续时间,延迟和计时函数开始列表中可动画属性的转换。列出“转换持续时间”,“转换延迟”和“转换时间功能”。换句话说,必须在列表中保留无法识别或不可动画的属性以保持索引的匹配。

规范似乎没有考虑支持或动画指定属性的 none 的情况,即使在转换propdefs之后的部分也没有。看起来IE正在将声明视为有效,虽然没有被转换的支持属性,从而覆盖了先前的声明,并有效地使声明等效于transition-property: none(即结果类似,但正如您所观察到的那样该值实际上并不计算为none)。

Firefox的行为与IE的行为相同,将声明视为等同于transition-property: none

此外,如果您将未加前缀且带前缀的transform属性名称放在同一个声明中,IE和Firefox会对变换进行动画处理(顺序无关紧要):

transition: -webkit-transform 1s, transform 1s;

但是,如果您放置任何其他您希望与无法识别的属性一起使用的属性,导致Chrome删除声明... 仍然删除该声明。是的,IE和Firefox在上述声明中正确应用过渡, Chrome完全忽略它

但是,似乎只有未知属性名称存在这个问题。例如,如果指定受支持但不可设置动画的属性,例如background-image

transition: -webkit-transform 1s, background-image 1s;

Chrome可以很好地为变换设置动画。

尽管如此,我仍然不完全确定规范是否含糊不清,或者IE和Firefox中显示的行为实际上是正确的。听起来它可以用任何方式进行一些澄清,所以我已经和emailed CSSWG有关。