CSS-Formular-Generator

Ergebnisse

Formulare sind der am häufigsten berührte Teil der meisten Websites und der am wenigsten ausgefeilte Teil vieler. Dieser Generator erzeugt das CSS für ein vollständig gestaltetes Formular: ein responsives Formularraster, Label- und Eingabepaare, Textbereiche, Auswahlfelder und sichtbare Fokus-Zustände in einem einheitlichen visuellen Stil. Legen Sie Akzentfarbe, Eckenradius und Abstand fest und kopieren Sie dann das Stylesheet. Das CSS behält die native Formularsemantik bei, sodass Validierung, Tastaturnutzung und Screenreader funktionieren.

So verwenden Sie den Generator

  1. 1

    Akzentfarbe festlegen

    Die Akzentfarbe bestimmt den Fokus-Rahmen und die Rahmenfarbe jedes Felds.

  2. 2

    Eckenradius wählen

    Der Radius gilt für Eingabefelder, Textbereiche und Auswahlfelder, damit alle ein einheitliches Erscheinungsbild haben.

  3. 3

    Abstand festlegen

    Der Abstand steuert den vertikalen Zwischenraum zwischen den Feldern im Formularraster.

  4. 4

    CSS kopieren

    Ein komplettes Stylesheet, das Sie einfügen und anpassen können, ohne Ihr HTML zu ändern.

Das Basisformular

<form class="form">
  <label class="field">
    <span class="field-label">E-Mail</span>
    <input type="email" required>
    <span class="field-error">Bitte geben Sie eine gültige E-Mail-Adresse ein.</span>
  </label>

  <label class="field">
    <span class="field-label">Passwort</span>
    <input type="password" minlength="8" required>
  </label>

  <button type="submit" class="button">Anmelden</button>
</form>
.field {
  display: block;
  margin-bottom: 1.25rem;
}
.field-label {
  display: block;
  font-weight: 500;
  margin-bottom: .25rem;
}
.field input {
  width: 100%;
  padding: .5rem .75rem;
  font: inherit;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  background: #fff;
  transition: border-color 120ms, box-shadow 120ms;
}
.field input:focus-visible {
  outline: none;
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}
.field input:invalid:not(:placeholder-shown) {
  border-color: #dc2626;
}
.field-error { display: none; color: #dc2626; font-size: .875rem; margin-top: .25rem; }
.field input:invalid:not(:placeholder-shown) ~ .field-error { display: block; }

Vier gängige Stile

Stil Was es ist Am besten geeignet
Umrandet Rand um Eingabe, transparenter Hintergrund Desktop-Formulare, dichte Layouts
Unterstrichen Nur ein unterer Rand Minimal / redaktionelles UI
Gefüllt Grauer Hintergrund, kein Rand Material Design-inspiriertes UI
Schwebendes Label Label sitzt innen, animiert beim Fokus/Wert Mobile-first, Landing Pages

Schwebendes Label ist am schönsten, erfordert jedoch zusätzliches Markup oder JavaScript, um den leeren Zustand zu erkennen. Umrandet ist am universellsten.

Barrierefreiheits-Checkliste

  • Sichtbares Label für jedes Eingabefeld. Verwenden Sie niemals Platzhalter als einziges Label, es verschwindet beim Fokus und erfüllt nicht die Kontrastanforderungen.
  • <label for> oder umschließendes <label>. Beides ist gültig; das Umschließen ist etwas einfacher.
  • Fokusindikator. Verwenden Sie niemals outline: none ohne Ersatz. Tastaturnutzer benötigen ihn.
  • Fehlermeldungen: verlinken Sie sie über aria-describedby auf dem Eingabefeld. Verwenden Sie nicht nur Farbe, um Fehler zu kennzeichnen, fügen Sie eine Textnachricht oder ein Symbol hinzu.
  • Erforderliche Felder: verwenden Sie das Attribut required. Fügen Sie ein visuelles Zeichen (Sternchen) im Label für sehende Benutzer hinzu.
  • Eingabetypen: verwenden Sie type="email", type="tel", type="url", type="number". Mobile Tastaturen passen sich an.
  • autocomplete-Attribute: autocomplete="email", autocomplete="current-password", usw. Spart den Benutzern viel Tipparbeit.

Native Validierungszustände (browsereigen)

CSS hat Pseudo-Klassen für die Formularvalidität:

  • :required / :optional
  • :valid / :invalid
  • :in-range / :out-of-range (für numerische Eingaben mit min/max)
  • :placeholder-shown (leer, Platzhalter sichtbar)
  • :user-invalid (ungültig und Benutzer hat interagiert, die richtige für Fehlerstile)

Die Pseudo-Klasse :user-invalid ist der sauberste Weg, um Fehler nur anzuzeigen, nachdem der Benutzer etwas getan hat, und vermeidet rote Ränder vor der Interaktion. Unterstützung wurde 2023 in allen großen Browsern eingeführt.

Deaktivierter Zustand

.field input:disabled {
  background: #f3f4f6;
  color: #9ca3af;
  cursor: not-allowed;
}

Deaktivierte Eingaben sind nicht fokussierbar oder absendbar. Wenn Sie möchten, dass sie für Screenreader fokussierbar sind, verwenden Sie stattdessen readonly, das Formular sendet den Wert, aber der Benutzer kann ihn nicht bearbeiten.

Häufig gestellte Fragen

Nein. Platzhalter verschwinden, sobald der Benutzer tippt, sodass sie nicht als Labels dienen können. Außerdem hat Platzhaltertext typischerweise einen niedrigen Kontrast und erfüllt nicht die WCAG. Verwenden Sie ein sichtbares Label plus einen optionalen Platzhalter für Format-Hinweise.

Weil :invalid sofort auf leere erforderliche Felder angewendet wird. Verwenden Sie :user-invalid (interaktionsbewusst) oder kombinieren Sie :invalid:not(:placeholder-shown) als Workaround in älteren Browsern.

Setzen Sie appearance: none, entfernen Sie den Standardpfeil, fügen Sie Ihren eigenen über ein Hintergrundbild oder ein umschließendes Span mit einem Pseudo-Element-Pfeil hinzu. Die Optionslisten bleiben OS-stilisiert und können nicht mit CSS angepasst werden.

Beides. Die HTML-Validierung (required, type, pattern) erfasst einfache Fälle ohne JavaScript. JavaScript behandelt komplexe Regeln (Passwortstärke, Abhängigkeiten zwischen Feldern). Validieren Sie immer auch auf dem Server, die clientseitige Validierung dient der Benutzererfahrung, nicht der Sicherheit.

Verwandte Tools