Sass: 变量名中使用字符串模板

作者: 写代码的海怪 | 来源:发表于2019-01-17 11:55 被阅读2次

翻译:SASS: interpolation in a name of variable

问题

使用 Sass 的时候,我们可能在某些场景下使用到字符串模板,如:

@mixin set-border($side) {
    border-#{$side}: solid 1px #000;
}
.header {
    @include set-border("top");
}

这些会编译成:

.header { border-top: solid 1px #000; }

这里主要是想在使用变量的同时去渲染不一样的 CSS 属性。但是现在 Sass 还不允许直接在 Mixin 和变量名中直接用字符串模板。如:

$bg-dark: #000;
$bg-white: #FFF;
@mixin set-styles($arg) {
    background-color: $bg-#{$arg};
}
.header {
    @include set-styles("dark");
}

编译后的结果是:

Sass Error: Undefined variable: "$bg-".

解决方法

对于上面的情况你可以使用 placeholder 去解决。可以在 placeholder 上使用字符串模板。所以你可以需要的是定义 placeholder,而不是变量。

%bg-dark {
    background-color: #000;
}
%bg-white{
    background-color: #FFF;
}
@mixin set-styles($arg) {
    @extend %bg-#{$arg};
}
.header {
    @include set-styles("dark");
}

编译后的结果是:

.header { background-color: #000; }

相关文章

  • es6小结

    模板字符串字符串拼接不需要+,而是用``,变量用${变量名}表示 Tips:模板字符串里的变量的值取模板字符串定义...

  • Sass: 变量名中使用字符串模板

    翻译:SASS: interpolation in a name of variable 问题 使用 Sass 的...

  • es6

    1.模板字符串 $().append(` `) 添加模板字符串,模板字符串中嵌入变量,需要将变量名写在${}之中。...

  • TS 字符串新特性

    No 1:声明多行字符串: ` 这里面支持换行 ` No 2:字符串模板 : `I am ${变量名}` ,...

  • es6:模板字符串

    模板字符串:${变量名}标签模板:是函数调用的一种特殊形式,标签指的是函数紧跟在后面的模板字符串就是它的参数 st...

  • ES6新增特性部分

    `` 字符串模板 ${变量名称}代替字符串拼接字符串查找str.indexOf(str) 返回索引,没找到返回值 ...

  • es6 ` `模板字符串

    1.模板字符串,需要将原本的双引号('单引号')改成 2.模板字符串中嵌入变量,需要将变量名写在${ }之中, 普...

  • es6--模板字符串

    模板字符串:使用tab键上面的反引号,插入变量时使用${变量名}

  • Kotlin 字符串模板

    字符串模板 在字符串中使用变量和表达式 具体用法

  • es6推荐菜

    模板字符串 注: 模板字符串中使用的是反引号 变量的解构赋值var [a, b, c] = [1, 2, 3] l...

网友评论

    本文标题:Sass: 变量名中使用字符串模板

    本文链接:https://www.haomeiwen.com/subject/qlabdqtx.html