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

View in English Always switch to English

CSS-Pseudoklasse :autofill

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Die :autofill-Pseudoklasse von CSS trifft zu, wenn der Browser den Wert eines <input>-Elements automatisch ausgefüllt hat. Sie trifft nicht mehr zu, sobald der Benutzer das Feld bearbeitet.

Probieren Sie es aus

input {
  border: 3px solid black;
}
input:autofill {
  outline: 5px solid magenta;
  border: 3px dashed yellow;
}
<form>
  <p>Click on the text box and choose any option suggested by your browser.</p>
  <p>
    <label for="name">Name</label>
    <input id="name" name="name" type="text" autocomplete="given-name" />
  </p>
  <p>
    <label for="email">Email Address</label>
    <input id="email" name="email" type="email" autocomplete="email" />
  </p>
  <p>
    <label for="country">Country</label>
    <input
      id="country"
      name="country"
      type="text"
      autocomplete="country-name" />
  </p>
</form>

Syntax

css
:autofill {
  /* ... */
}

Beschreibung

Die Pseudoklasse :autofill wählt <input>-Elemente aus, deren Inhalt vom Browser automatisch ausgefüllt und seitdem nicht bearbeitet wurde. Die automatische Vervollständigung kann erfolgen, wenn sie in den Browsereinstellungen aktiviert ist oder das autocomplete-Attribut am Element selbst gesetzt ist.

Wenn der Benutzer die Funktion zur automatischen Vervollständigung des Browsers verwendet, um ein Formularsteuerelement auszufüllen, werden alle Formularsteuerelemente ausgefüllt, die aufgrund der Auswahl automatisch ausgefüllt werden können. Sie alle entsprechen dann dem UI-Zustand :autofill. Bearbeitet der Benutzer eines dieser Steuerelemente, entspricht es nicht mehr :autofill – selbst wenn sein Wert danach mit dem automatisch ausgefüllten Wert übereinstimmt.

Die Spezifikation enthält auch die Pseudoklasse :-webkit-autofill mit Anbieterpräfix als Alias. Auch sie trifft auf Eingabeelemente zu, die vom Browser automatisch ausgefüllt wurden, und trifft nicht mehr zu, wenn der Benutzer das ausgefüllte Feld bearbeitet.

Beachten Sie, dass die User-Agent-Stylesheets vieler Browser !important in ihren Stildeklarationen verwenden. Dadurch lassen sich manche Stile nicht überschreiben. Chrome enthält beispielsweise Folgendes in seinem internen Stylesheet:

css
input:-internal-autofill-selected {
  appearance: menulist-button;
  background-image: none !important;
  background-color:
    light-dark(rgb(232 240 254), rgb(70 90 126 / 0.4)) !important;
  color: fieldtext !important;
}

Das bedeutet, dass Sie die Standardwerte von background-color, background-image und color für ausgewählte, automatisch ausgefüllte Eingabeelemente nicht mit eigenen Regeln überschreiben können. appearance können Sie dagegen überschreiben. Für automatisch ausgefüllte Elemente, die derzeit nicht fokussiert sind, können Sie auch die anderen genannten Eigenschaften überschreiben.

Beispiele

Das folgende Beispiel zeigt, wie Sie mit der Pseudoklasse :autofill den Rahmen eines Textfelds ändern, das vom Browser automatisch vervollständigt wurde.

HTML

Wir verwenden drei HTML-<input>-Elemente, denen jeweils ein <label> zugeordnet ist. name und email werden wahrscheinlich automatisch vervollständigt und entsprechen dann :autofill; bei pet ist das unwahrscheinlich.

html
<form method="post" action="">
  <p>
    <label for="name">Name: </label>
    <input name="n" id="name" autocomplete="given-name" />
  </p>
  <p>
    <label for="email">Email: </label>
    <input type="email" name="email" id="email" autocomplete="email" />
  </p>
  <p>
    <label for="pet">Your pet's name: </label>
    <input name="pet" id="pet" />
  </p>
</form>

CSS

Wir wenden border-radius, outline und border-color auf die <input>-Elemente an, wenn sie dem Zustand :autofill entsprechen.

css
input {
  border-radius: 0px;
}

input:autofill {
  border-radius: 0.5lh;
  outline: 5px dashed magenta;
  border-color: yellow;
}

Ergebnis

Wenn Sie die automatische Vervollständigung für name zulassen, erhalten name und email einen abgerundeten Rahmen und eine magentafarbene Kontur. Der Rahmen selbst ändert sich allerdings wahrscheinlich nicht, weil im User-Agent-Stylesheet !important gesetzt ist. Bearbeiten Sie eines der Felder: Sobald Sie den Wert geändert haben, werden die :autofill-Stile nicht mehr angewendet – auch dann nicht, wenn Sie den ursprünglichen automatisch vervollständigten Wert wiederherstellen.

Spezifikationen

Spezifikation
HTML
# selector-autofill
Selectors Level 4
# selectordef-autofill

Browser-Kompatibilität

Siehe auch