是否可以在SASS中的变量中嵌套变量?

时间:2013-08-29 01:55:09

标签: variables nested sass

我有一个mixin接受我想要传递给变量的参数。

@mixin my_mixin($arg) {
  background-color: $state-#{$arg}-text;
}

2 个答案:

答案 0 :(得分:8)

目前在SASS中无法插入变量名称。以下是讨论此https://github.com/nex3/sass/issues/626

的问题

但是,您可以使用占位符插值:

%my-dark-styles {
   background-color: #000;
}
%my-white-styles {
   background-color: #FFF;
}

@mixin my_mixin($arg) {
   @extend %my-#{$arg}-styles;
}

.header {
   @include my_mixin("dark");
}
.footer {
   @include my_mixin("white");
}

这编译为:

.header {
  background-color: #000; }

.footer {
  background-color: #FFF; }

答案 1 :(得分:3)

从Sass 3.3开始,您也可以使用地图 http://blog.sass-lang.com/posts/184094-sass-33-is-released

以下是一个例子:

$state-light-text : #FFFFFF;
$state-dark-text : #000000;

$color-map: ( //create a array to support the two colors light and dark
    light: $state-light-text,
    dark: $state-dark-text
);


@each $color-key, $color-var in $color-map {
    .myclass--#{$color-key} { //will generate .myclass--light  .myclass--dark
        background-color: $color-var; // equal $state-light-text or $state-dark-text
    }
}

它将编译成:

.myclass--light { 
    background-color: #FFFFFF;
}

.myclass--dark {
    background-color: #000000;
}