Переменные SCSS являются статическими (используются для создания вывода CSS), поэтому их нельзя использовать для динамического изменения значений в зависимости от контекста (это работа для переменных CSS).
Пример 1 - только переменные SCSS
SCSS
$nightSelector: '.night';
$daySelector : '.day';
header {
#{$nightSelector} &,
&#{$nightSelector} { background: #333; }
#{$daySelector} &,
&#{$daySelector} { background: #f3f4f8; }
}
Вывод CSS
.night header, header.night {
background: #333;
}
.day header, header.day {
background: #f3f4f8;
}
HTML
<header class="night">Lorem</header>
<header class="day">Lorem</header>
<body class="night">
<header>Lorem</header>
</body>
<body class="day">
<header>Lorem</header>
</body>
Пример 2 - переменные SCSS + CSS
SCSS
$nightSelector: '.night';
$daySelector: '.day';
#{$nightSelector} {
--header-bg-color: #333;
}
#{$daySelector} {
--header-bg-color: #f3f4f8;
}
header {
background: var(--header-bg-color);
}
Вывод CSS
.night {
--header-bg-color: #333;
}
.day {
--header-bg-color: #333;
}
header {
background: var(--header-bg-color);
}
HTML
<header class="night">Lorem</header>
<header class="day">Lorem</header>
<body class="night">
<header>Lorem</header>
</body>
<body class="day">
<header>Lorem</header>
</body>