<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 Benutzeroberflächenelement, das es dem Benutzer ermöglicht, eine Farbe entweder durch eine visuelle Farbauswahloberfläche auszuwählen oder die Farbe in ein Textfeld im #rrggbb
-Hexadezimalformat einzugeben.
Nur grundlegende Hexadezimalfarben (ohne Alphakanal) sind erlaubt, obwohl CSS-Farben mehr Formate haben, z. B. Farbnamen, funktionale Notationen und ein Hexadezimalformat mit einem Alphakanal.
Die Darstellung des Elements kann stark von einem Browser und/oder einer Plattform zur anderen variieren – es kann sich um ein einfaches Texteingabefeld handeln, das automatisch validiert, um sicherzustellen, dass die Farbinformationen im richtigen Format eingegeben werden, oder um einen plattformstandardmäßigen Farbwähler oder eine Art benutzerdefinierte 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 eine Zeichenkette, die eine 7-stellige Zeichenkette enthält, die eine RGB-Farbe im Hexadezimalformat angibt. Sie können die Farbe in Groß- oder Kleinbuchstaben eingeben, sie wird jedoch in Kleinbuchstaben gespeichert. Der Wert liegt niemals in einer anderen Form vor und ist niemals leer.
Hinweis:
Wenn Sie den Wert auf etwas setzen, das keine gültige, vollständig deckende RGB-Farbe in Hexadezimalschreibweise ist, wird der Wert auf #000000
gesetzt. Insbesondere können Sie keine standardisierten Farbnamen aus CSS oder eine CSS-Funktionssyntax verwenden, um den Wert festzulegen. Dies ist sinnvoll, 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 in der 9-stelligen Hexadezimalschreibweise (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 der unterstützten Attribute.
Eine Standardfarbe bereitstellen
Sie können das obige Beispiel aktualisieren, um einen Standardwert festzulegen, sodass der Farbwähler mit der Standardfarbe vorgefüllt ist und der Farbwähler (falls vorhanden) ebenfalls diese Standardfarbe verwendet:
<input type="color" value="#ff0000" />
Wenn Sie keinen Wert angeben, ist der Standard #000000
, was schwarz ist. Der Wert muss in der siebenstelligen Hexadezimalschreibweise vorliegen, was bedeutet, dass das Zeichen "#" gefolgt von zwei Ziffern steht, die jeweils Rot, Grün und Blau darstellen, so: #rrggbb
. Wenn Sie Farben in einem anderen Format haben (wie CSS-Farbnamen oder CSS-Farbfunktionen wie rgb()
oder hsl()
), müssen Sie diese vor dem Festlegen des value
in Hexadezimal umwandeln.
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 die Farbe geändert wird. 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 ermitteln, indem Sie seinen value
betrachten.
Hier ist ein Beispiel, das Ä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;
});
}
Den Wert auswählen
Wenn ein Browser keine Farbauswahl-Oberfläche unterstützt, wird seine Implementierung von Farbeingaben ein Textfeld sein, das die Inhalte automatisch validiert, um sicherzustellen, dass der Wert im richtigen Format vorliegt. In diesem Fall können Sie die Methode select()
verwenden, um den derzeit im Bearbeitungsfeld befindlichen 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 angemessen reagieren kann.
colorPicker.select();
Validierung
Ein Farbinput-Wert wird als ungültig betrachtet, wenn der User-Agent die Benutzereingabe nicht in siebenstelliges, kleingeschriebenes Hexadezimalformat umwandeln kann. Wenn dies der Fall ist, wird die Pseudo-Klasse :invalid
auf das Element angewendet.
Beispiel
HTML
Das HTML ist ziemlich einfach — ein paar Absätze beschreibendes Material mit einem <input>
des Typs color
mit der ID color-picker
, die verwendet wird, um die Farbe des Absatztexts 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 einige Vorbereitungen. Hier richten wir einige Variablen ein, setzen eine Variable, die die Farbe enthält, auf die wir den Farbwähler beim ersten Laden setzen, und richten dann einen load
Handler ein, um die Hauptarbeiten beim Start durchzuführen, 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 bekommt eine Referenz zu dem Farbe <input>
Element in einer Variablen namens colorPicker
, dann setzt es den Wert des Farbeingabefelds auf den Wert in defaultColor
. Dann wird das input
Ereignis des Farbeingabefelds eingerichtet, um unsere updateFirst()
Funktion aufzurufen, und das change
Ereignis, um updateAll()
aufzurufen. Diese sind beide unten zu sehen.
Schließlich rufen wir select()
auf, um den Textinhalt des Farbeingabefelds auszuwählen, falls die Steuerung als Textfeld implementiert ist (dies hat keine Auswirkung, wenn eine Farbwahl-Oberfläche stattdessen bereitgestellt wird).
Auf Farbänderungen reagieren
Wir stellen zwei Funktionen bereit, 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), werden diese wiederholt ausgelöst, 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 nicht mehr geändert wird (es sei denn, der Benutzer öffnet den Farbwähler erneut), wird ein change
-Ereignis an das Element gesendet. Wir bearbeiten dieses Ereignis mithilfe der updateAll()
Funktion, wobei 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 mit dem aktuellen Wert der Farbeingabe übereinstimmt, auf die mit event.target
verwiesen wird.
Ergebnis
Das Endergebnis sieht so aus:
Technische Zusammenfassung
Wert |
Eine 7-stellige Zeichenkette, die ein
<color> in kleingeschriebenem Hexadezimalformat angibt
|
Ereignisse | [`change`](/de/docs/Web/API/HTMLElement/change_event) und [`input`](/de/docs/Web/API/Element/input_event) |
Unterstützte allgemeine 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) |