1 css sass cross-browser vendor-prefix css-animations
我们计划了很多动画,我正在寻找一种更清晰的方式来解决所有浏览器问题.像这样的东西会很棒:
@each $browser in '-webkit-', '-moz-', '-o-', '-ms-' {
@#{$browser}keyframes rotate {
from { #{$browser}transform: rotate(0deg);}
to { #{$browser}transform: rotate(360deg);}
}
}
Run Code Online (Sandbox Code Playgroud)
除了@#{$vendor}keyfr...产生一个错误,期望一个数字或函数后@.有没有办法强制@通过css?
否则,有没有人想出一个更简洁的方法来完成这个@each,@mixin或者其他任何可以为每个浏览器列出每个动画(即下面)的东西?
@-webkit-keyframes rotate {
from { -webkit-transform: rotate(0deg);}
to { -webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotate {
from { -moz-transform: rotate(0deg);}
to { -moz-transform: rotate(360deg);}
}
@-o-keyframes rotate {
from { -o-transform: rotate(0deg);}
to { -o-transform: rotate(360deg);}
}
@-ms-keyframes rotate {
from { -ms-transform: rotate(0deg);}
to { -ms-transform: rotate(360deg);}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用mixin执行此操作,您可以预先定义供应商关键帧,而不是在循环中动态生成供应商.沿着这些方向的东西可能是:
@mixin keyframes($animationName) {
@-webkit-keyframes #{$animationName} {
$browser: '-webkit-'; @content;
}
@-moz-keyframes #{$animationName} {
$browser: '-moz-'; @content;
}
@-o-keyframes #{$animationName} {
$browser: '-o-'; @content;
}
@keyframes #{$animationName} {
$browser: ''; @content;
}
} $browser: null;
@include keyframes('rotate') {
from { #{$browser}transform: rotate(0deg);}
to { #{$browser}transform: rotate(360deg);}
}
Run Code Online (Sandbox Code Playgroud)