Не удается установить переменную SCSS в переменную CSS?

Рассмотрим следующий SCSS:

$color-black: #000000;

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

Когда он компилируется с помощью node-sass версия 4.7.2, он создает следующий CSS:

body {
    --color: #000000; 
}

Когда я компилирую тот же SCSS с версией 4.8.3 или выше, он дает следующее:

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

Что мне не хватает? Я проверил логи релизов, но ничего полезного не нашел. Кроме того, мне интересно, является ли это изменение подлинным, почему оно имеет только незначительное изменение версии? Разве это не должен быть основной релиз?

Кроме того, какая у меня альтернатива? Следует использовать Интерполяция?

Ага, используйте строковую интерполяцию, т.е. --color: #{$color-black};. См .: github.com/sass/node-sass/issues/2336

Terry 06.05.2018 22:14
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
27
1
7 441
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

scss и css

Я нашел обходной путь для сопоставления переменных scss с переменными css.

См. Ответ Терри для лучшего использования

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;
}
Ответ принят как подходящий

Просто используйте интерполяцию строк:

$color-black: #000000;

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

Очевидно, старое поведение не предназначено и нарушало языковые спецификации SASS:

У меня была проблема со старыми версиями sass.

При попытке составить список переменных, поступающих из массива, он застревает в двойном тире. Вот мое решение на случай, если это кому-то поможет


$var-element:'--';

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

Другие вопросы по теме