SASS:在mixin中添加扩展

bra*_*r19 1 css sass

我有三个 sass 文件(包含所有必要的导入):

  • 标头
  • 变量
  • 精灵

在变量中我有:

@mixin svg-sprite($sprite) {
  @extend .{$sprite};
  @extend .{$sprite}-res;
}
Run Code Online (Sandbox Code Playgroud)

在标题中我正在调用:

@include svg-sprite(".logo");
Run Code Online (Sandbox Code Playgroud)

在精灵中:

%svg-common {
    background: url("svg/sprite.view.svg") no-repeat;
}

.logo {
    @extend %svg-common;
    background-position: 0 58.3969465648855%;
}

.logo-res {
    width: 180px;
    height: 80px;
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

Error: Invalid CSS after "  @extend": expected selector, was ".{$sprite};"
        on line ** of ****.scss
>>   @extend .{$sprite};
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Bla*_*gma 5

问题是你忘记了#mixin

代码行应该如下所示

@mixin svg-sprite($sprite) {
  @extend #{$sprite};
  @extend #{$sprite}-res;
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,确实如此。插值非常强大,在处理选择器时效果很好。 (2认同)