Sass mixins不会替换变量

时间:2014-09-10 16:08:18

标签: sass

我正在尝试使用SASS mixin在动画上自动使用供应商前缀。这是mixin:

@mixin keyframes($name) {
    @-o-keyframes $name { @content };
    @-moz-keyframes $name { @content };
    @-webkit-keyframes $name { @content }; 
    @keyframes $name { @content };
}

现在,如果我这样包含它:

@include keyframes(test) {
    from {
        opacity: 0; 
    }
    to {
        opacity: 1;
    }
}

生成的css如下所示:

@-o-keyframes $name { ... }
@-moz-keyframes $name { ... }
@-webkit-keyframes $name { ... }
@keyframes $name { ... }

SASS根本不会将$name替换为test。这是一个已知的bug还是有变通方法?我找不到与此问题相关的任何内容。顺便说一句,我正在使用SASS版本3.4.1。

1 个答案:

答案 0 :(得分:8)

在mixin中将$name更改为#{$name}

@mixin keyframes($name) {
  @-o-keyframes #{$name} { @content };
  @-moz-keyframes #{$name} { @content };
  @-webkit-keyframes #{$name} { @content }; 
  @keyframes #{$name} { @content };
}

Demo