<input type="color">
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
<input>
-Elemente vom Typ color
bieten ein Benutzeroberflächenelement, das es einem Benutzer ermöglicht, eine Farbe anzugeben, entweder durch die Verwendung einer visuellen Farbauswahloberfläche oder durch das Eingeben der Farbe in ein Textfeld im #rrggbb
-Hexadezimalformat.
Nur grundlegende Hexadezimalfarben (ohne Alphakanal) sind erlaubt, obwohl CSS-Farben mehr Formate haben, z. B. Farbnamen, funktionale Notationen und ein Hexadezimalformat mit Alphakanal.
Die Darstellung des Elements kann stark von einem Browser und/oder einer Plattform zur anderen variieren – es könnte ein einfaches Texteingabefeld sein, das automatisch validiert, um sicherzustellen, dass die Farbinformationen im richtigen Format eingegeben werden, oder ein plattformstandardisiertes Farbauswahlwerkzeug oder eine Art benutzerdefiniertes Farbauswahlfenster.
Probieren Sie es aus
<p>Choose your monster's colors:</p>
<div>
<input type="color" id="head" name="head" value="#e66465" />
<label for="head">Head</label>
</div>
<div>
<input type="color" id="body" name="body" value="#f6b73c" />
<label for="body">Body</label>
</div>
p,
label {
font:
1rem "Fira Sans",
sans-serif;
}
input {
margin: 0.4rem;
}
Wert
Der value
eines <input>
-Elements vom Typ color
ist immer ein String, der einen RGB-Farbcode im Hexadezimalformat als 7-Zeichen-String angibt. Während Sie die Farbe entweder in Groß- oder Kleinbuchstaben eingeben können, wird sie in Kleinbuchstaben gespeichert. Der Wert liegt nie in einem anderen Format vor und ist nie leer.
Hinweis:
Wenn der Wert auf etwas gesetzt wird, das keine gültige, vollständig undurchsichtige RGB-Farbe in hexadezimaler Notation ist, wird der Wert auf #000000
gesetzt. Insbesondere können Sie weder die standardisierten Farbnamen von CSS noch eine CSS-Funktionssyntax verwenden, um den Wert festzulegen. Dies ist sinnvoll, wenn man bedenkt, dass HTML und CSS separate Sprachen und Spezifikationen sind. Außerdem werden Farben mit einem Alphakanal nicht unterstützt; das Angeben einer Farbe in 9-Zeichen-Hexadezimalnotation (z. B. #009900aa
) führt ebenfalls dazu, dass die Farbe auf #000000
gesetzt wird.
Verwendung von Farbeingaben
Eingaben vom Typ color
sind einfach, da sie nur eine begrenzte Anzahl an Attributen unterstützen.
Vorgabefarbe bereitstellen
Sie können das obige Beispiel aktualisieren, um einen Standardwert festzulegen, sodass das Farbauswahlwerkzeug mit der Vorgabefarbe vorausgefüllt wird und der Farbwähler (falls vorhanden) ebenfalls auf diese Farbe voreingestellt wird:
<input type="color" value="#ff0000" />
Wenn Sie keinen Wert angeben, ist die Vorgabe #000000
, was Schwarz ist. Der Wert muss in siebenstelliger Hexadezimalnotation vorliegen, was das Zeichen "#" gefolgt von jeweils zwei Ziffern für Rot, Grün und Blau bedeutet, etwa so: #rrggbb
. Wenn Sie Farben in einem anderen Format haben (wie z. B. CSS-Farbnamen oder CSS-Farbfunktionen wie rgb()
oder hsl()
), müssen Sie diese in Hexadezimal umwandeln, bevor Sie den value
-Wert festlegen.
Nachverfolgen von Farbänderungen
Wie bei anderen <input>
-Typen gibt es zwei Ereignisse, die verwendet werden können, um Änderungen am Farbwert 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 seinen value
-Wert betrachten.
Hier ist ein Beispiel, das die Änderungen des Farbwerts im Laufe der Zeit verfolgt:
colorPicker.addEventListener("input", updateFirst, false);
colorPicker.addEventListener("change", watchColorPicker, false);
function watchColorPicker(event) {
document.querySelectorAll("p").forEach((p) => {
p.style.color = event.target.value;
});
}
Auswählen des Wertes
Wenn ein Browser keine Farbauswahloberfläche unterstützt, wird seine Implementierung von Farbeingaben ein Textfeld sein, das den Inhalt automatisch validiert, um sicherzustellen, dass der Wert im richtigen Format vorliegt. In diesem Fall können Sie die select()
-Methode verwenden, um den aktuell im Bearbeitungsfeld befindlichen Text auszuwählen.
Wenn der Browser stattdessen eine Farbauswahl verwendet, macht select()
nichts. Sie sollten sich dieses Verhaltens bewusst sein, damit Ihr Code in beiden Fällen angemessen reagieren kann.
colorPicker.select();
Validierung
Ein Farbeingabewert gilt als ungültig, wenn der user agent nicht in der Lage ist, die Benutzereingabe in eine siebenstellige, kleingeschriebene Hexadezimalnotation umzuwandeln. Ist dies der Fall, wird die :invalid
-Pseudoklasse auf das Element angewendet.
Beispiel
HTML
Das HTML ist ziemlich unkompliziert – ein paar Absätze mit beschreibendem Material und ein <input>
vom Typ color
mit der ID color-picker
, die wir verwenden werden, um die Textfarbe 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
Zuerst gibt es etwas Einrichtung. Hier legen wir einige Variablen fest, indem wir eine Variable einrichten, die die Farbe enthält, auf die wir den Farbwähler beim ersten Laden einstellen werden, und dann eine load
-Handler einrichten, der die Hauptinitialisierung durchführt, sobald die Seite vollständig geladen ist.
let colorPicker;
const defaultColor = "#0000ff";
window.addEventListener("load", startup, false);
Initialisierung
Sobald die Seite geladen ist, wird unser load
-Ereignishandler startup()
aufgerufen:
function startup() {
colorPicker = document.querySelector("#color-picker");
colorPicker.value = defaultColor;
colorPicker.addEventListener("input", updateFirst, false);
colorPicker.addEventListener("change", updateAll, false);
colorPicker.select();
}
Dies ruft eine Referenz auf das <input>
-Element in einer Variablen namens colorPicker
ab und setzt dann den value
-Wert der Farbeingabe auf den Wert in defaultColor
. Dann wird das input
-Ereignis der Farbeingabe so konfiguriert, dass unsere updateFirst()
-Funktion aufgerufen wird, und das change
-Ereignis so, dass updateAll()
aufgerufen wird. Diese werden jeweils unten gezeigt.
Zum Schluss rufen wir select()
auf, um den Textinhalt der Farbeingabe auszuwählen, falls die Steuerung als Textfeld implementiert ist (dies hat keine Auswirkung, wenn stattdessen eine Farbwähleroberfläche bereitgestellt wird).
Reagieren auf Farbänderungen
Wir stellen zwei Funktionen bereit, die sich mit Farbänderungen befassen. Die updateFirst()
-Funktion wird in Reaktion auf das input
-Ereignis aufgerufen. Sie ändert die Farbe des ersten Absatz-Elements im Dokument, sodass es dem neuen Wert der Farbeingabe entspricht. Da input
-Ereignisse jedes Mal ausgelöst werden, wenn eine Anpassung des Wertes vorgenommen wird (zum Beispiel, wenn die Helligkeit der Farbe erhöht wird), erfolgen diese Änderungen 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 anzeigt, dass der Wert sich nicht mehr ändert (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 und verwenden Event.target.value
, 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 sein color
-Attribut dem aktuellen Wert der Farbeingabe entspricht, der mit event.target
referenziert wird.
Ergebnis
Das Endergebnis sieht folgendermaßen aus:
Technische Übersicht
Wert |
Ein 7-Zeichen-String, der einen
<color> in kleingeschriebener Hexadezimalnotation angibt
|
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 | list und value |
DOM-Schnittstelle | [`HTMLInputElement`](/de/docs/Web/API/HTMLInputElement) |
Methoden | [`select()`](/de/docs/Web/API/HTMLInputElement/select) |
Implizierte ARIA-Rolle | keine entsprechende Rolle |
Spezifikationen
Specification |
---|
HTML # color-state-(type=color) |