<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 des Typs color
bieten ein Benutzerschnittstellenelement, das einem Benutzer ermöglicht, eine Farbe anzugeben, entweder durch die Verwendung einer visuellen Farbauswahl oder durch die Eingabe der Farbe in einem Textfeld im #rrggbb
-Hexadezimalformat.
Es sind nur grundlegende Hexadezimalfarben (ohne Alphakanal) erlaubt, obwohl CSS-Farben mehr Formate haben, z.B. Farbnamen, funktionale Notationen und ein Hexadezimalformat mit einem Alphakanal.
Die Präsentation des Elements kann je nach Browser und/oder Plattform erheblich variieren - es könnte ein einfaches texteingabefeld mit automatischer Validierung sein, um sicherzustellen, dass die Farbinformationen im richtigen Format eingegeben werden, ein plattformstandardisierter Farbwähler, oder eine Art von benutzerdefiniertem 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 des Typs color
ist immer ein String, der einen RGB-Farbwert im Hexadezimalformat als 7-Zeichen-String enthält. Während Sie die Farbe sowohl in Groß- als auch in Kleinbuchstaben eingeben können, wird sie in Kleinbuchstaben gespeichert. Der Wert liegt niemals in einer anderen Form vor und ist nie leer.
Hinweis:
Wenn Sie den Wert auf etwas setzen, das kein gültiger, vollständig deckender RGB-Farbwert im Hexadezimalformat ist, wird der Wert auf #000000
gesetzt. Insbesondere können Sie nicht die standardisierten Farbnamen von CSS oder irgendeine CSS-Funktionssyntax verwenden, um den Wert zu setzen. Das ergibt Sinn, wenn Sie bedenken, dass HTML und CSS separate Sprachen und Spezifikationen sind. Darüber hinaus werden Farben mit einem Alphakanal nicht unterstützt; die Angabe einer Farbe im 9-Zeichen-Hexadezimalformat (z.B. #009900aa
) führt ebenfalls dazu, dass die Farbe auf #000000
gesetzt wird.
Verwendung von Farbeingaben
Eingaben des Typs color
sind einfach, aufgrund der begrenzten Anzahl an unterstützten Attributen.
Vorgabefarbe festlegen
Sie können das obige Beispiel aktualisieren, um einen Standardwert einzustellen, 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" />
Wenn Sie keinen Wert angeben, ist der Standardwert #000000
, was Schwarz ist. Der Wert muss in siebenstelliger Hexadezimalnotation angegeben werden, das heißt das "#" Zeichen gefolgt von zwei Ziffern für Rot, Grün und Blau, so: #rrggbb
. Wenn Sie Farben in einem anderen Format haben (wie CSS-Farbnamen oder CSS-Farb-Funktionen wie rgb()
oder hsl()
), müssen Sie diese vor dem Setzen des value
in Hexadezimal umwandeln.
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 die Farbauswahl beendet. In beiden Fällen können Sie den neuen Wert des Elements feststellen, indem Sie dessen value
betrachten.
Hier ist ein Beispiel, das Änderungen des Farbwerts über die 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 Werts
Wenn ein Browser keine Farbauswahl-Schnittstelle unterstützt, wird seine Implementierung der Farbeingaben ein Textfeld sein, das die Inhalte automatisch validiert, um sicherzustellen, dass der Wert im korrekten Format vorliegt. In diesem Fall können Sie die select()
Methode verwenden, um den aktuell im Bearbeitungsfeld ausgewählten Text zu markieren.
Wenn der Browser stattdessen eine Farbauswahl verwendet, hat select()
keine Wirkung. Sie sollten sich dieses Verhaltens bewusst sein, damit Ihr Code in beiden Fällen angemessen reagiert.
colorPicker.select();
Validierung
Der Wert einer Farbeingabe wird als ungültig angesehen, wenn der Nutzeragent nicht in der Lage ist, die Eingabe des Benutzers in eine siebenstellige Hexadezimalnotation in Kleinbuchstaben zu konvertieren. In diesem Fall wird die :invalid
Pseudoklasse auf das Element angewendet.
Beispiel
HTML
Das HTML ist ziemlich einfach — ein paar Absätze beschreibenden Materials mit einem <input>
des Typs color
mit der ID color-picker
, das wir verwenden, 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
Zuerst erfolgt etwas Einrichtung. Hier richten wir einige Variablen ein, indem wir eine Variable definieren, die die Farbe enthält, die wir für die Farbauswahl einstellen, wenn wir sie zum ersten Mal laden, und dann einen load
Handler einstellen, um die grundlegende Startarbeit zu erledigen, 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();
}
Dieser erhält eine Referenz zum Farbe <input>
Element in einer Variablen namens colorPicker
und setzt dann den Wert des Farbeingabefelds auf den Wert in defaultColor
. Dann wird das input
Ereignis der Farbeingabe so eingerichtet, dass unsere Funktion updateFirst()
aufgerufen wird, und das change
Ereignis wird so eingestellt, dass updateAll()
aufgerufen wird. Diese beiden werden unten gezeigt.
Am Ende rufen wir select()
auf, um den Textinhalt des Farbeingabefelds auszuwählen, wenn das Steuerelement als Textfeld implementiert ist (dies hat keine Wirkung, wenn stattdessen eine Schnittstelle für die Farbauswahl bereitgestellt wird).
Reagieren auf Farbänderungen
Wir stellen zwei Funktionen bereit, die sich mit Farbänderungen befassen. Die updateFirst()
Funktion wird als Reaktion auf das input
Ereignis aufgerufen. Sie ändert die Farbe des ersten Absatz-Elements im Dokument, um dem neuen Wert der Farbeingabe zu entsprechen. 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), passieren 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 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 sein color
Attribut dem aktuellen Wert der Farbeingabe entspricht, der mit event.target
referenziert wird.
Ergebnis
Das Endergebnis sieht so aus:
Technische Zusammenfassung
Wert |
Ein 7-Zeichen-String, der ein
<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) |
Implizite ARIA-Rolle | keine entsprechende Rolle |
Spezifikationen
Specification |
---|
HTML # color-state-(type=color) |
Browser-Kompatibilität
BCD tables only load in the browser