如何在前缀(关键帧)内添加前缀(转换)?
How do i add prefixes (transform) within prefixes (keyframes)?
如果我使用@keyframes 来执行变换动画,我将如何布置我的前缀?
如果我有以下情况:
@keyframes animation {
0% { transform:rotate(0deg); }
100% { transform:rotate(360deg); }
}
然后我需要将我所有的转换前缀添加到每个关键帧声明吗?例如:
@keyframes animation {
0% {
-webkit-transform:rotate(0deg);
-ms-transform:rotate(0deg);
transform:rotate(0deg);
}
100% {
-webkit-transform:rotate(360deg);
-ms-transform:rotate(360deg);
transform:rotate(360deg);
}
}
@-webkit-keyframes animation {
0% {
-webkit-transform:rotate(0deg);
-ms-transform:rotate(0deg);
transform:rotate(0deg);
}
100% {
-webkit-transform:rotate(360deg);
-ms-transform:rotate(360deg);
transform:rotate(360deg);
}
}
这个有用吗?如果这是执行此操作的最佳方法,还是有 shorthand / 更快的方法?我想即使是稍微复杂的动画,这种方式也会很快看起来笨重和可怕。
一般来说,前缀是一团糟,尤其是涉及到 CSS 动画和变换时。我有一个管理这两个功能的前缀的综合指南,您可以找到 .
你有的当然有用,但没必要:
除 IE 之外的浏览器无论如何都不会识别 -ms-transform
声明,支持开箱即用 CSS 动画的 IE 版本也支持无前缀 transform
.
这意味着根本不需要 -ms-transform
。您应该删除它的所有实例。在 CSS 动画之外,您真正需要它,您希望转换在 IE9 中静态工作。详情见上文link。
动画和变换最近才在 WebKit 中取消前缀。但是,支持 @keyframes
unprefixed 的 WebKit 版本也支持 transforms unprefixed。您可以从 @keyframes
规则中删除 -webkit-transform
声明。
我不会触及这两个规则中没有前缀的 transform
声明。转换比动画稍微早一点没有前缀,所以一些需要 @-webkit-keyframes
的 WebKit 版本支持不带前缀的转换。
另外,没有前缀的规则应该放在最后。这适用于属性(如 transform
)和规则(如 @keyframes
)。这是经过上述优化后的 CSS:
@-webkit-keyframes animation {
0% {
-webkit-transform:rotate(0deg);
transform:rotate(0deg);
}
100% {
-webkit-transform:rotate(360deg);
transform:rotate(360deg);
}
}
@keyframes animation {
0% {
transform:rotate(0deg);
}
100% {
transform:rotate(360deg);
}
}
如果我使用@keyframes 来执行变换动画,我将如何布置我的前缀?
如果我有以下情况:
@keyframes animation {
0% { transform:rotate(0deg); }
100% { transform:rotate(360deg); }
}
然后我需要将我所有的转换前缀添加到每个关键帧声明吗?例如:
@keyframes animation {
0% {
-webkit-transform:rotate(0deg);
-ms-transform:rotate(0deg);
transform:rotate(0deg);
}
100% {
-webkit-transform:rotate(360deg);
-ms-transform:rotate(360deg);
transform:rotate(360deg);
}
}
@-webkit-keyframes animation {
0% {
-webkit-transform:rotate(0deg);
-ms-transform:rotate(0deg);
transform:rotate(0deg);
}
100% {
-webkit-transform:rotate(360deg);
-ms-transform:rotate(360deg);
transform:rotate(360deg);
}
}
这个有用吗?如果这是执行此操作的最佳方法,还是有 shorthand / 更快的方法?我想即使是稍微复杂的动画,这种方式也会很快看起来笨重和可怕。
一般来说,前缀是一团糟,尤其是涉及到 CSS 动画和变换时。我有一个管理这两个功能的前缀的综合指南,您可以找到
你有的当然有用,但没必要:
除 IE 之外的浏览器无论如何都不会识别
-ms-transform
声明,支持开箱即用 CSS 动画的 IE 版本也支持无前缀transform
.这意味着根本不需要
-ms-transform
。您应该删除它的所有实例。在 CSS 动画之外,您真正需要它,您希望转换在 IE9 中静态工作。详情见上文link。动画和变换最近才在 WebKit 中取消前缀。但是,支持
@keyframes
unprefixed 的 WebKit 版本也支持 transforms unprefixed。您可以从@keyframes
规则中删除-webkit-transform
声明。我不会触及这两个规则中没有前缀的
transform
声明。转换比动画稍微早一点没有前缀,所以一些需要@-webkit-keyframes
的 WebKit 版本支持不带前缀的转换。
另外,没有前缀的规则应该放在最后。这适用于属性(如 transform
)和规则(如 @keyframes
)。这是经过上述优化后的 CSS:
@-webkit-keyframes animation {
0% {
-webkit-transform:rotate(0deg);
transform:rotate(0deg);
}
100% {
-webkit-transform:rotate(360deg);
transform:rotate(360deg);
}
}
@keyframes animation {
0% {
transform:rotate(0deg);
}
100% {
transform:rotate(360deg);
}
}