CSS-Element basierend auf ausgewählter Farbpalette

Ich versuche herauszufinden, wie man die Farbe eines Elements basierend auf dem ausgewählten Farbschema festlegt. Das Folgende funktioniert gut für meinen Hellmodus, aber nicht so gut für meinen Dunkelmodus.

.d-header-icons .d-icon {
	width: 100%;
	line-height: 1.4;
	display: inline-block;
	color: var(--secondary);
}

Ich würde es für den Dunkelmodus bevorzugen.

color: var(--secondary-low)

Das funktioniert gut für den Dunkelmodus, aber nicht für den Hellmodus. Gibt es eine Möglichkeit, den Wert von color: basierend auf dem ausgewählten Farbschema anzupassen?

Hallo,

Es gibt mehrere Möglichkeiten, dies zu tun.

Zum Beispiel:

Sie können die Farben des Farbschemas unter admin/customize/colors/ ändern. Wählen Sie einfach Ihr Dunkelmodus-Farbschema aus und ändern Sie den Farbcode für secondary.

Hinweis: Dies ändert die Sekundärfarbe überall, nicht nur bei den Header-Symbolen.


Oder Sie können die prefers-color-scheme-Medienabfrage verwenden, um secondary im Dunkelmodus in secondary-low zu ändern.

Etwas wie das hier:

.d-header-icons .d-icon {
  width: 100%;
  line-height: 1.4;
  display: inline-block;
  color: var(--secondary);
  @media (prefers-color-scheme: dark) {
    color: var(--secondary-low);
  }
}

Oder Sie können benutzerdefinierte Farbdefinitionen erstellen: Why might dark-light-choose() not work? - #2 by awesomerobot


Ich hoffe, das hilft :slightly_smiling_face:

2 „Gefällt mir“

Danke für die Anleitung.

Das scheint genau das zu sein, was ich tun möchte (nur die Header-Symbole ändern, nicht alle Elemente mit der Farbe --secondary). Eine letzte Frage … das funktioniert, wenn das Theme als Dark-Mode-Theme eingestellt ist und der Dark-Mode vom Betriebssystem aktiviert wird, aber nicht, wenn das Dark-Mode-Theme als „reguläres“ Theme gewählt wird. Irgendwelche Vorschläge dazu?

1 „Gefällt mir“

Oh ja, das wird so nicht funktionieren, wenn das dunkle Farbschema auswählbar ist.


Ich denke, die beste Option ist, eine benutzerdefinierte Farbdefinition dafür zu erstellen, und Sie können diese Farbvariable für Header-Symbole verwenden.

Erstellen Sie eine Theme-Komponente und fügen Sie Folgendes zum Tab Farbdefinitionen hinzu

Setzen Sie den Farbcode von secondary-low auf $dark-theme-header-icons und den Farbcode von secondary auf $light-theme-header-icons

$dark-theme-header-icons: #e9e9e9;
$light-theme-header-icons: #222;

$header-icons: dark-light-choose($light-theme-header-icons, $dark-theme-header-icons);

:root {
  --custom-header-icons: #{$header-icons};
}

Danach können Sie diese Farbvariable --custom-header-icons für die Farbe der Header-Symbole verwenden.

.d-header-icons .d-icon {
  width: 100%;
  line-height: 1.4;
  display: inline-block;
  color: var(--custom-header-icons);
}
2 „Gefällt mir“

Das hat wie am Schnürchen funktioniert! Danke!

2 „Gefällt mir“

Nur eine weitere Sache … funktioniert das, wenn ich color_definitions.scss in mein Theme einbinde, anstatt eine Theme-Komponente zu verwenden?

1 „Gefällt mir“

Sicher, das wird auch funktionieren. :slightly_smiling_face:

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.