Alex_P
(Alex P.)
23 Maggio 2021, 10:49am
1
Vorrei fare qualcosa del genere
.some-link {
@if var(--scheme-type) == 'dark' {
color: var(--primary);
} @else {
color: #3b5998;
}
ma ovviamente non è possibile perché non esiste un if in CSS e SCSS non viene elaborato a runtime.
Per quanto ne so, Discourse non aggiunge classi per indicare se il tema scuro è attivo e CSS non consente l’uso di proprietà personalizzate nei selettori.
Avete qualche idea su quale potrebbe essere la soluzione migliore?
Penso che questo sia ciò che stai cercando:
Quindi, in color_definitions.scss puoi fare:
$my-theme-color: dark-light-choose($primary, red);
:root {
--my-theme-color: #{$my-theme-color};
}
e poi utilizzerai la nuova proprietà personalizzata per il cambio scuro/chiaro nel tuo tema:
body {
color: var(--my-theme-color);
}
Alex_P
(Alex P.)
25 Maggio 2021, 5:21am
3
Yay, sembra funzionare
Un po’ strano che i parametri non siano nello stesso ordine del nome della funzione.
$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;
Quindi deve essere dark-light-choose(#3b5998, $primary)