LESS:混合创建闪烁动画,传递@color -stops
LESS: mixin to create Blink animation, passing @color -stops
我希望使用 LESS 创建一个 CSS 效果类似于 "Blink effect" 的动画。我的目的是每次传递 2 @stop
颜色时调用一个 mixin,以便根据 DOM 元素的 css class 获得不同的颜色闪烁。
目前我有以下HTML:
<p class='blink'>
Loading...
</p>
<p class='blink alert'>
<big>WARNING!!!! Operation failed.</big>
</p>
在这里,更少的代码:
.blink
{
.animation-blink-mixin(@dark-green,@light-green);
&.alert
{
.animation-blink-mixin(@dark-red,@light-red);
}
}
动画混音:
.animation-blink-mixin (@stop1, @stop2, @time:2s)
{
animation:animation-blink @durata infinite;
.steps()
{
0% { color:@stop1; }
50% { color:@stop2; }
100% { color:@stop1; }
}
@keyframes animation-blink { .steps(); }
}
我的问题是两个 DOM 元素都有相同的 "red color" 动画,而不是一个 green2green 和另一个 red2red。
我知道问题出在 "animation name" 中,而且总是一样。一些达到预期行为的建议?
谢谢。
只需明确设置动画名称,例如 (codepen demo):
.blink {
.animation-blink(blink, #080 + 200, #080);
&.alert {
.animation-blink(alert, #800, #800 + 200);
}
}
.animation-blink(@name_, @color1, @color2, @time: .5s) {
@name: ~"animation-blink-@{name_}";
animation: @name @time ease-in-out infinite alternate;
@keyframes @name {
0% {color: @color1}
to {color: @color2}
}
}
我希望使用 LESS 创建一个 CSS 效果类似于 "Blink effect" 的动画。我的目的是每次传递 2 @stop
颜色时调用一个 mixin,以便根据 DOM 元素的 css class 获得不同的颜色闪烁。
目前我有以下HTML:
<p class='blink'>
Loading...
</p>
<p class='blink alert'>
<big>WARNING!!!! Operation failed.</big>
</p>
在这里,更少的代码:
.blink
{
.animation-blink-mixin(@dark-green,@light-green);
&.alert
{
.animation-blink-mixin(@dark-red,@light-red);
}
}
动画混音:
.animation-blink-mixin (@stop1, @stop2, @time:2s)
{
animation:animation-blink @durata infinite;
.steps()
{
0% { color:@stop1; }
50% { color:@stop2; }
100% { color:@stop1; }
}
@keyframes animation-blink { .steps(); }
}
我的问题是两个 DOM 元素都有相同的 "red color" 动画,而不是一个 green2green 和另一个 red2red。
我知道问题出在 "animation name" 中,而且总是一样。一些达到预期行为的建议?
谢谢。
只需明确设置动画名称,例如 (codepen demo):
.blink {
.animation-blink(blink, #080 + 200, #080);
&.alert {
.animation-blink(alert, #800, #800 + 200);
}
}
.animation-blink(@name_, @color1, @color2, @time: .5s) {
@name: ~"animation-blink-@{name_}";
animation: @name @time ease-in-out infinite alternate;
@keyframes @name {
0% {color: @color1}
to {color: @color2}
}
}