【问题标题】:Sass mixins are not replacing variablesSass mixins 不会替换变量
【发布时间】:2014-09-11 00:22:20
【问题描述】:

我正在尝试使用 SASS 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 根本不会用test 替换$name。这是一个已知的错误还是有解决方法?我找不到与此问题相关的任何内容。顺便说一句,我使用的是 SASS 版本 3.4.1。

【问题讨论】:

    标签: sass


    【解决方案1】:

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

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

    Demo

    【讨论】:

    • 这可行,但它是一个错误,对吧?文档没有提到这一点。
    • 是的,但根据文档,它应该可以工作而无需进行插值:sass-lang.com/documentation/…(这个问题也突然出现在我的项目中。你的回答解决了问题,但我会想知道为什么会这样)
    猜你喜欢
    • 2020-10-17
    • 2018-11-22
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多