我正在测试一些特殊内容,我正在尝试在关键帧内循环以动态地将百分比写入其中。
我用SASS测试了类似的东西,但它不起作用。
@keyframes test{
@for $i from 0 through 100 {
#{$i}% {
//do special stuff
}
$i: $i + 1;
}
我希望它输出:
@keyframes test{
0%{
...
}
1%{
...
}
2%{
...
}
3%{
...
}
...
}
但我得到了
Error on line number: 23. Invalid CSS after " #{$i}%": expected placeholder name, was " {"
我在LESS测试了这个,它也不起作用。
@a: 0%;
@keyframes test{
.func (@a, @b, @c);
}
.func (@a, @b, @c) when (@a < 100%){
(@a){
//do special stuff
}
.func (@a+1, @b, @c);
}
有人可以帮助我吗?
答案 0 :(得分:11)
如果你这样做,它会起作用:
@keyframes test {
@for $i from 0 through 100 {
#{$i * 1%} {
// do special stuff
}
}
}
答案 1 :(得分:1)
需要.for
mixin
这是一个NON inline-js版本,以实现最大兼容性
@keyframes crazy {
.for(0,100);.-each(@i){
@selector: e('@{i}%');
@{selector} {
/* do crazy stuff */
}
}
}
@keyframes crazy {
0% {
/* do crazy stuff */
}
1% {
/* do crazy stuff */
}
2% {
/* do crazy stuff */
}
3% {
/* do crazy stuff */
}
4% {
/* do crazy stuff */
}
...etc
}
答案 2 :(得分:0)
Sass显然需要定义为百分比的值才能正确呈现。 本示例生成关键帧以为背景设置动画,但是您可以将值列表和属性都更改为设置动画。
//Given a list of colors
$COLORS: $COLOR-MAIN #f39d75 #c1cecd #f3f57e
// Define a mixin
=animate-color-keyframes($list: $COLORS, $property: background)
//declare the first keyframe statically
0%
#{$property}: nth($list, -1)
@for $i from 1 through length($list)
// calculate the keyframe percentage
$percentage: $i / length($list)
$keyframe: percentage($percentage)
// render keyframes
#{$keyframe}
#{$property}: nth($list, $i)
// .....
@keyframes change-bg-color
+animate-color-keyframes
@keyframes change-bg-color {
0% {
background: #f3f57e; }
25% {
background: #abf0b3; }
50% {
background: #f39d75; }
75% {
background: #c1cecd; }
100% {
background: #f3f57e; }
}