Alex_P
(Alex P.)
23.Май.2021 10:49:13
1
Я хочу сделать что-то вроде этого:
.some-link {
@if var(--scheme-type) == 'dark' {
color: var(--primary);
} @else {
color: #3b5998;
}
но, конечно, это невозможно, потому что в CSS нет конструкции if, а SCSS не обрабатывается во время выполнения.
Насколько я понимаю, Discourse не добавляет никаких классов, чтобы указать, активна ли тёмная схема, а CSS не позволяет использовать пользовательские свойства в селекторах.
Есть какие-то идеи, какой может быть лучшее решение?
Я думаю, это то, что вы ищете:
Таким образом, в color_definitions.scss вы можете написать:
$my-theme-color: dark-light-choose($primary, red);
:root {
--my-theme-color: #{$my-theme-color};
}
а затем использовать новое пользовательское свойство для смены тёмной/светлой темы в вашей теме:
body {
color: var(--my-theme-color);
}
Alex_P
(Alex P.)
25.Май.2021 05:21:47
3
Ура, кажется, работает
Немного странно, что параметры не в том же порядке, что и в названии функции.
$darkness
) {
@if dc-color-brightness($adjusted-color) <
dc-color-brightness($comparison-color)
{
@return scale-color($adjusted-color, $lightness: $lightness);
} @else {
@return scale-color($adjusted-color, $lightness: $darkness);
}
}
@function dark-light-choose($light-theme-result, $dark-theme-result) {
@if is-light-color-scheme() {
@return $light-theme-result;
} @else {
@return $dark-theme-result;
}
}
@function is-light-color-scheme() {
@if dc-color-brightness($primary) < dc-color-brightness($secondary) {
@return true;
Поэтому должно быть dark-light-choose(#3b5998, $primary)