Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

<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ßt rgb(), hsl(), hwb() und <hex-color> Werte ein. Der Farbwert ist auf 8-Bit pro r, g und b Komponente 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.

html
<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:

js
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.

js
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.

html
<p>
  An example demonstrating the use of the
  <code>&lt;input type="color"&gt;</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:

js
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.

js
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:

js
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

Browser-Kompatibilität

html.elements.input.type_color

html.elements.input.alpha

html.elements.input.colorspace

Siehe auch