95

Consider the following SCSS:

$color-black: #000000;

body {
    --color: $color-black;
}

When it is compiled with node-sass version 4.7.2, it produces following CSS:

body {
    --color: #000000; 
}

When I compile the same SCSS with version 4.8.3 or higher, it produces following:

body {
    --color: $color-black; 
}

What am I missing? I checked release logs, but could not found anything useful. Also, I wonder if this change is genuine why does it have only minor version change? Should it not be a major release?

Also, what is my alternative? Should I use Interpolation?

2
  • 10
    Yup, use string interpolation, i.e. --color: #{$color-black};. See: github.com/sass/node-sass/issues/2336 Commented May 6, 2018 at 20:14
  • The title is misleading w.r.t. the direction of the attempted assignment. Commented Apr 9, 2024 at 8:31

3 Answers 3

181

Just use string interpolation:

$color-black: #000000;

body {
    --color: #{$color-black};
}

Apparently the old behaviour is not intended and violated the language specs of SASS:

Sign up to request clarification or add additional context in comments.

Comments

16

scss and css

I found a workaround to mapping the scss variables to css variables.

See Terry's answer for better use

Scss:

// sass variable map 
$colors: (
  color-black: #FFBB00
);

// loop over each name, color
:root {
  // each item in color map
  @each $name, $color in $colors {
    --#{$name}: #{$color};
  }
}

Css:

:root {
  --color-black: #FFBB00;
}

Comments

3

I had an issue with older sass versions.

Trying to compile a list of variables coming from an array, it would get stuck with the double dash. Here's my solution in case it helps someone


$var-element:'--';

:root {
    @each $color in $color-variables {
     #{$var-element}#{nth($color, 1)}: #{nth($color, 2)};   
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.