W3docs

CSS :required Pseudo-Klasse

Verwende die CSS-Pseudo-Klasse :required, um Pflichtfelder in Formularen hervorzuheben. Mit Beispielen erklärt.

Die CSS-Pseudo-Klasse :required trifft jedes Formularsteuerelement, dessen required-Attribut gesetzt ist. Damit kannst du Felder, die ein Benutzer ausfüllen muss, bevor das Formular abgesendet werden kann, visuell kennzeichnen — mit einem Sternchen, einem farbigen Rand oder einem Hinweistext — damit Nutzer nicht erst auf den Senden-Button klicken, um dann durch einen Validierungsfehler zurückgeworfen zu werden.

Diese Seite erklärt, welche Elemente :required trifft, wie es sich von :optional und den Gültigkeits-Pseudo-Klassen unterscheidet, welchen Zugänglichkeits-Hinweis du kennen solltest, und zeigt ein lauffähiges Beispiel.

Welche Elemente trifft :required?

:required trifft nur Elemente, die das required-Attribut tatsächlich unterstützen und bei denen es gesetzt ist:

  • <input> (von einem Typ, der required unterstützt — text, email, password, tel, url, number, date, checkbox, radio, file usw.)
  • <select>
  • <textarea>

Es trifft nicht <button>, <input type="submit">, <input type="hidden"> oder Elemente, bei denen required keine Bedeutung hat. Das Matching ist dynamisch: Wenn du das required-Attribut per JavaScript hinzufügst oder entfernst, wird das Styling sofort aktualisiert.

:required vs. verwandte Pseudo-Klassen

:required beschreibt den Zustand der Einschränkung, nicht ob der Benutzer sie erfüllt hat. Kombiniere es mit den passenden Nachbarn:

Pseudo-KlasseTrifft zu, wenn…
:requireddas Feld das required-Attribut hat
:optionaldas Feld required nicht hat
:validder aktuelle Wert des Feldes seine Einschränkungen erfüllt
:invalidder aktuelle Wert des Feldes seine Einschränkungen nicht erfüllt

Jedes Formularsteuerelement ist entweder :required oder :optional, sodass du das Styling sauber aufteilen kannst. Die Gültigkeitszustände (:valid / :invalid) reagieren dann, während der Benutzer tippt.

Syntax

:required {
  /* CSS declarations */
}

Normalerweise schränkst du es auf einen bestimmten Steuerelementtyp ein, damit die Regel nicht auf unverwandte Elemente übergreift:

input:required,
select:required,
textarea:required {
  border-left: 3px solid #1c87c9;
}

Hinweis zur Barrierefreiheit

Styling allein (Farbe, ein dickerer Rand) reicht nicht aus — farbenblinde Nutzer und Screenreader-Nutzer könnten es übersehen. Behalte das native required-Attribut am Steuerelement (es macht die Anforderung für Hilfstechnologien sichtbar und löst die Browser-Validierung aus) und ergänze es durch einen sichtbaren Texthinweis wie ein Sternchen. :required dient der visuellen Verbesserung, nicht der Informationsvermittlung.

Beispiel

Das folgende Beispiel markiert Pflichtfelder mit einem blauen unteren Rand und graut optionale Felder mit :optional aus:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .example {
        margin: 40px auto;
        max-width: 400px;
      }
      label,
      button {
        display: block;
        width: 100%;
        margin-bottom: 1.5em;
      }
      input,
      button {
        padding: .4em 1em;
      }
      input {
        border: 1px solid #666666;
      }
      input:optional {
        background-color: #eeeeee;
        color: #666666;
      }
      input:required {
        border-bottom: 3px solid #1c87c9;
      }
    </style>
  </head>
  <body>
    <h2>:required selector example</h2>
    <div class="example">
      <form action="#">
        <label>
          <input type="text" required />Name *
        </label>
        <label>
          <input type="email" required />Email *
        </label>
        <label>
          <input type="tel" />Phone (optional)
        </label>
        <label>
          <input type="url" />Address (optional)
        </label>
      </form>
    </div>
  </body>
</html>

Die Pflichtfelder Name und Email erhalten den blauen Unterstrich; die optionalen Felder Phone und Address erhalten den grauen Hintergrund — gesteuert ausschließlich durch die :required- und :optional-Regeln.

Browserunterstützung und Spezifikation

:required wird von jedem modernen Browser unterstützt und das schon seit Jahren, sodass du es ohne Fallback verwenden kannst. Es ist in zwei Spezifikationen definiert:

Verwandte Themen

  • :optional — das Gegenstück: gestaltet Steuerelemente ohne required.
  • :valid und :invalid — reagieren darauf, ob der eingegebene Wert seine Einschränkungen erfüllt.
  • :focus — in Kombination mit :required, um das aktive Pflichtfeld hervorzuheben.
  • :disabled und :checked — weitere formularstatus-bezogene Pseudo-Klassen.
  • HTML Forms — wo das required-Attribut gesetzt wird.

Übung

Übung
Was ist die Funktion der ':required'-Pseudo-Klasse in CSS?
Was ist die Funktion der ':required'-Pseudo-Klasse in CSS?
Was this page helpful?