转换仅接受& amp;的mixin关键帧选择器接受多个关键帧选择器

时间:2014-09-25 16:29:45

标签: css less css-animations mixins less-mixins

我有这个Less mixin:

.keyframes (@name, @fromRules, @toRules) {
    @-webkit-keyframes ~'@{name}' { from { @fromRules(); } to { @toRules(); } }
            @keyframes ~'@{name}' { from { @fromRules(); } to { @toRules(); } }
}

我打电话给例如:

.keyframes(fade-in,
    {
        opacity: 0;
    },
    {
        opacity: 1;
    }
);

结果是:

@-webkit-keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

但是我怎么能使用Less mixins所以我可以使用不同于0%,100%和2个以上关键帧的选择器的关键帧 - 选择器,所以结果将如下所示:

@keyframes fade-in {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 0.5;
  }
  100% {
    opacity: 1;
  }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以通过将整个关键帧选择器列表(例如0%50%100%等)的规则作为单个规则集传递给mixin以及动画的名称。

同样如评论中的七阶段最大值所述,@-webkit-keyframes ~'@{name}'不是必需的,可以简单地写为@-webkit-keyframes @name

.keyframes (@name, @rules) {
    @-webkit-keyframes @name { @rules(); }
            @keyframes @name { @rules(); }
}

div{
    .keyframes(fade-in,
    {
        0% { opacity: 0;}
        50% { opacity: 1;}
        100% { opacity: 0;}
    });
}

CodePen Demo - 单击CSS框中的眼睛图标以查看已编译的输出。

注意: