LESS:mixin创建Blink动画,传递@color -stops

时间:2015-03-19 11:02:29

标签: less css-animations mixins less-mixins

我希望创建一个类似" Blink效果"的CSS动画。使用LESS。我的目的是调用单个mixin每次传递2 @stop种颜色,以便根据DOM元素的css类获得不同的颜色闪烁。

目前我有以下HTML:

  <p class='blink'>
    Loading...
  </p>

  <p class='blink alert'>
    <big>WARNING!!!! Operation failed.</big>
  </p>

在这里,LESS CODE:

.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元素都具有相同的红色&#34;动画,而不是一个 green2green 和其他 red2red

我明白这个问题出现在&#34;动画名称&#34;总是一样的。一些建议达到预期的行为?

感谢。

1 个答案:

答案 0 :(得分:1)

只需明确设置动画名称,例如(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}
    }
}