【问题标题】:sass mixins with loops givies error带有循环的 sass mixins 给出错误
【发布时间】:2016-10-07 18:02:40
【问题描述】:

我正在编写一个 sass 代码来获取 css 输出,如下所示。

 background: -webkit-linear-gradient(top, 50%);
 background: -moz-linear-gradient(top, 50%);
 background: linear-gradient(top, 50%);

我为此编写的 sass mixin 代码是:

@mixin linear-gradient($name, $arg1, $arg2){
    @each $vendor in ('-webkit-', '-moz-','') {
        background: #{$vendor}#{$name}(#{$arg1}, #{$arg2});
    }
}
@include linear-gradient(linear-gradient, top, 50%);

但我遇到了错误。谁能告诉我为什么?

【问题讨论】:

    标签: css sass compass-sass mixins


    【解决方案1】:

    $name 参数似乎没有必要,所以我在第一个示例中省略了它。第二个示例显示了使用$name 的替代解决方案,以便正确编译括号。

    @mixin linear-gradient($arg1, $arg2){
        @each $vendor in ('-webkit-', '-moz-','') {
            background: #{$vendor}linear-gradient(#{$arg1}, #{$arg2});
        }
    }
    
    @mixin linear-gradient($name, $arg1, $arg2){
        @each $vendor in ('-webkit-', '-moz-','') {
            background: #{$vendor}$name+'('+$arg1+', '+$arg2+')';
        }
    }
    
    #myElement {
        @include linear-gradient(top, 50%);
    }
    
    /* Output */
    
    #myElement {
      background: -webkit-linear-gradient(top, 50%);
      background: -moz-linear-gradient(top, 50%);
      background: linear-gradient(top, 50%);
    }
    

    【讨论】:

    • $name 代表样式“线性渐变”。请参阅编辑后的问题。
    • 我得到的输出是
    • 背景:-webkit-linear-gradienttop, 50%
    • @das 我已经更新了我的答案以提供一种替代解决方案,该解决方案在不省略 $name 参数的情况下编译括号。
    • 您使用 '+' 连接 '(' 的想法有所帮助。我可以做到,但略有不同,如下所示。
    猜你喜欢
    • 2014-01-11
    • 2014-09-12
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2017-12-22
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多