<input type="color"> HTML-Attributswert
<input>-Elemente vom Typ color bieten ein Benutzeroberflächenelement, das es einem Benutzer ermöglicht, eine Farbe anzugeben, entweder durch Verwendung einer visuellen Farbauswahloberfläche oder durch Eingabe der Farbe in ein Textfeld im CSS-Farbwertformat.
Die Darstellung des Elements kann von einem Browser und/oder einer Plattform zur anderen erheblich variieren — es kann sich um eine einfache Texteingabe handeln, die automatisch validiert, um sicherzustellen, dass die Farbinformationen im richtigen Format eingegeben werden, oder um einen plattformüblichen Farbwähler oder eine Art benutzerdefiniertes Farbwählerfenster.
Probieren Sie es aus
<p>Choose your colors:</p>
<div>
<input type="color" id="foreground" name="foreground" value="#e66465" />
<label for="foreground">Foreground color</label>
</div>
<div>
<input
type="color"
id="background"
name="background"
value="oklab(50% 0.1 0.1 / 0.5)"
colorspace="display-p3"
alpha />
<label for="background">Background color</label>
</div>
p,
label {
font:
1rem "Fira Sans",
sans-serif;
}
input {
margin: 0.4rem;
}
Wert
Ein CSS-Farbwert.
Hinweis:
Historisch gesehen waren nur grundlegende hexadezimale Farben (ohne Alphakanal) erlaubt. Jetzt kann jedes CSS-Farbformat, einschließlich benannter Farben, funktionaler Notationen und hexadezimaler Farben mit einem Alphakanal, verwendet werden. Der Standardwert ist #000000 (schwarz), wenn ein value weggelassen oder ungültig ist.
Zusätzliche Attribute
Zusätzlich zu den globalen Attributen und den Input-Attributen, die allen <input>-Elementen gemeinsam sind, unterstützt der color-Input auch die folgenden Attribute:
alpha-
Ein boolesches Attribut, das anzeigt, dass der Alphakanal der Farbe vom Endbenutzer bearbeitet werden kann und nicht vollständig undurchsichtig sein muss.
colorspace-
Definiert den Farbraum für die Farbe und gibt einen Hinweis auf die gewünschte Benutzeroberfläche für das Farbwahl-Widget. Mögliche aufgezählte Werte sind:
"limited-srgb": Die Farbe befindet sich im sRGB-Farbraum. Dies schließtrgb(),hsl(),hwb()und<hex-color>Werte ein. Der Farbwert ist auf 8-Bit pror,gundbKomponente beschränkt. Dies ist der Standard."display-p3": Der Display P3-Farbraum, z.B.color(display-p3 1.84 -0.19 0.72 / 0.6).
Verwendung von Farbeingaben
Eingaben des Typs color sind einfach, aufgrund der begrenzten Anzahl von Attributen, die sie unterstützen.
Eine Standardfarbe bereitstellen
Sie können das obige Beispiel aktualisieren, um einen Standardwert festzulegen, sodass der Farbwähler mit der Standardfarbe vorausgefüllt ist und der Farbwähler (falls vorhanden) auch auf diese Farbe voreingestellt ist.
<input type="color" value="#ff0000" />
<input
type="color"
id="body"
name="body"
value="oklab(50% 0.1 0.1 / 0.5)"
colorspace="display-p3"
alpha />
Wenn Sie keinen Wert angeben oder wenn der Wert ungültig oder anderweitig vom Browser nicht unterstützt wird, wird der Wert standardmäßig auf #000000 gesetzt, was undurchsichtiges Schwarz ist.
Farbänderungen verfolgen
Wie bei anderen <input>-Typen gibt es zwei Ereignisse, die verwendet werden können, um Änderungen des Farbwerts zu erkennen: input und change. input wird auf dem <input>-Element jedes Mal ausgelöst, wenn sich die Farbe ändert. Das change-Ereignis wird ausgelöst, wenn der Benutzer den Farbwähler schließt. In beiden Fällen können Sie den neuen Wert des Elements bestimmen, indem Sie sich seinen value ansehen.
Hier ist ein Beispiel, das Änderungen des Farbwerts im Laufe der Zeit überwacht:
colorPicker.addEventListener("input", updateFirst);
colorPicker.addEventListener("change", watchColorPicker);
function watchColorPicker(event) {
document.querySelectorAll("p").forEach((p) => {
p.style.color = event.target.value;
});
}
Den Wert auswählen
Wenn ein Browser keine Farbauswahloberfläche unterstützt, wird die Implementierung der Farbeingaben ein Textfeld sein, das die Inhalte automatisch validiert, um sicherzustellen, dass der Wert im richtigen Format ist. In diesem Fall können Sie die Methode select() verwenden, um den aktuell im Bearbeitungsfeld enthaltenen Text auszuwählen.
Wenn der Browser stattdessen einen Farbwähler verwendet, tut select() nichts. Sie sollten sich dieses Verhaltens bewusst sein, damit Ihr Code in beiden Fällen entsprechend reagieren kann.
colorPicker.select();
Validierung
Ein Wert einer Farbeingabe wird als ungültig angesehen, wenn der Benutzeragent nicht in der Lage ist, die Eingabe des Benutzers in eine siebenstellige Kleinbuchstaben-Hexadezimalschreibweise umzuwandeln. Wenn dies der Fall ist, wird die :invalid-Pseudoklasse auf das Element angewendet.
Beispiel
Erstellen wir ein Beispiel, das etwas mehr mit der Farbeingabe macht, indem die change- und input-Ereignisse verfolgt werden, um die neue Farbe zu übernehmen und auf jedes <p>-Element im Dokument anzuwenden.
HTML
Das HTML ist ziemlich einfach — ein paar Absatztext mit einer <input> vom Typ color mit der ID color-picker, die wir verwenden werden, um die Farbe des Textes der Absätze zu ändern.
<p>
An example demonstrating the use of the
<code><input type="color"></code> control.
</p>
<label for="color-picker">Color:</label>
<input type="color" value="#ff0000" id="color-picker" />
<p>
Watch the paragraph colors change when you adjust the color picker. As you
make changes in the color picker, the first paragraph's color changes, as a
preview (this uses the <code>input</code> event). When you close the color
picker, the <code>change</code> event fires, and we detect that to change
every paragraph to the selected color.
</p>
JavaScript
Initialisierung
Der folgende Code initialisiert die Farbeingabe:
const defaultColor = "#0000ff";
const colorPicker = document.querySelector("#color-picker");
colorPicker.value = defaultColor;
colorPicker.addEventListener("input", updateFirst);
colorPicker.addEventListener("change", updateAll);
colorPicker.select();
Dies erhält einen Verweis auf das Farbeingabe-Element im Dokument in einer Variablen namens colorPicker und setzt den Wert der Farbeingabe auf den Wert in defaultColor. Dann wird das input-Ereignis der Farbeingabe eingerichtet, um unsere updateFirst()-Funktion aufzurufen, und das change-Ereignis wird so festgelegt, dass es updateAll() aufruft. Diese sind beide unten zu sehen.
Schließlich rufen wir select() auf, um den Textinhalt der Farbeingabe auszuwählen, wenn die Steuerung als Textfeld implementiert ist (dies hat keinen Effekt, wenn stattdessen eine Farbauswahloberfläche bereitgestellt wird).
Auf Farbänderungen reagieren
Wir bieten zwei Funktionen an, die mit Farbänderungen umgehen. Die updateFirst()-Funktion wird als Reaktion auf das input-Ereignis aufgerufen. Sie ändert die Farbe des ersten Absatz-Elements im Dokument, um mit dem neuen Wert der Farbeingabe übereinzustimmen. Da input-Ereignisse jedes Mal ausgelöst werden, wenn eine Anpassung am Wert vorgenommen wird (zum Beispiel, wenn die Helligkeit der Farbe erhöht wird), geschieht dies wiederholt, während der Farbwähler verwendet wird.
function updateFirst(event) {
const p = document.querySelector("p");
if (p) {
p.style.color = event.target.value;
}
}
Wenn der Farbwähler geschlossen wird, was bedeutet, dass sich der Wert nicht mehr ändern wird (es sei denn, der Benutzer öffnet den Farbwähler erneut), wird ein change-Ereignis an das Element gesendet. Wir behandeln dieses Ereignis mit der updateAll()-Funktion, indem wir Event.target.value verwenden, um die endgültig ausgewählte Farbe zu erhalten:
function updateAll(event) {
document.querySelectorAll("p").forEach((p) => {
p.style.color = event.target.value;
});
}
Dies setzt die Farbe jedes <p>-Blocks so, dass dessen color-Attribut mit dem aktuellen Wert der Farbeingabe übereinstimmt, auf die durch event.target verwiesen wird.
Ergebnis
Das endgültige Ergebnis sieht so aus:
Technische Zusammenfassung
| Wert |
Jeder CSS <color> Wert in beliebiger Notation.
|
| Ereignisse | [`change`](/de/docs/Web/API/HTMLElement/change_event) und [`input`](/de/docs/Web/API/Element/input_event) |
| Unterstützte gemeinsame Attribute |
autocomplete und
list
|
| IDL-Attribute |
alpha,
colorSpace,
list, und
value
|
| DOM-Schnittstelle | [`HTMLInputElement`](/de/docs/Web/API/HTMLInputElement) |
| Implizite ARIA-Rolle | keine entsprechende Rolle |
Spezifikationen
| Spezifikation |
|---|
| HTML> # color-state-(type=color)> |
| HTML> # attr-input-alpha> |
| HTML> # attr-input-colorspace> |