Search code examples
variablesnestedsass

Is it possible to nest variables within variables in SASS?


I have a mixin that accepts an argument that I want to pass into a variable.

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

Solution

  • Interpolation of variable names is currently not possible in SASS. Here is the issue that discusses.

    However, you may use interpolation of placeholders:

    %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");
    }
    

    This compiles to:

    .header {
      background-color: #000;
    }
    
    .footer {
      background-color: #FFF;
    }