Die meisten vom Browser generierten Benutzeroberflächen können bis zu einem gewissen Grad mit CSS angepasst werden. Auch wenn moderne Funktionen erforderlich sind, wird sie in älteren Browsern ordnungsgemäß ausgeführt und erfordert daher oft kein Polyfill oder Fallback.
Bevor Sie die Benutzeroberfläche des Browsers (Formularsteuerelemente, Bildlaufleisten, Auswahlen, Fehlermeldungen usw.) neu erstellen, sollten Sie Folgendes prüfen:
- die Browser-UI auch mit modernem CSS nicht ausreichend an Ihre Anforderungen angepasst werden kann,
- die gewünschte Anpassung ist wichtig genug, um die Nachteile der Neuerstellung der integrierten Benutzeroberfläche zu rechtfertigen – insbesondere den Verlust der barrierefreien Semantik, der Tastaturverarbeitung, des IME und der AT-Integration, die die native Benutzeroberfläche kostenlos bietet.
Beispiele für mögliche Anpassungen:
- Mit
::selectionkannst du die Farben von hervorgehobenem Text anpassen. - Wenden Sie
user-select: noneNICHT auf Inhaltstext an, da dies das Kopieren und Einfügen, Übersetzungstools und die Geste „Ab hier lesen“ von assistiven Technologien beeinträchtigt. Beschränken Sie sie auf die Benutzeroberfläche (Ziehpunkte, Symbolleisten, redundante Schaltflächenbeschriftungen). - Verwenden Sie
accent-color, um die Akzentfarbe der Seite auf alle vom Browser generierten UI-Elemente anzuwenden. - Mit
color-schemekannst du die Browser-UI an den hellen/dunklen Modus anpassen. - Verwenden Sie
scrollbar-color, um die Farben der Bildlaufleiste anzupassen, undscrollbar-width, um die Breite der Bildlaufleiste zu steuern. Achten Sie darauf, dass sich der Schieberegler deutlich von der Spur unterscheidet (≥ 3:1), und legen Siescrollbar-width: nonenicht für scrollbare Bereiche fest (verwenden Sie es nur, wenn das Scrollen vollständig durch eine andere Funktion ersetzt wird). - Verwenden Sie
:user-invalid/:user-validfür die Gültigkeitsformatierung, nicht:invalid/:valid. Diese werden nur angewendet, wenn der Nutzer mit dem Feld interagiert hat. So wird vermieden, dass erforderliche leere Felder beim Seitenaufbau als Fehler gekennzeichnet werden. Schließen Sie Bereichsschieberegler aus, wenn Sieinputallgemein ausrichten (z.B.input:not(input[type="range"]):user-valid), damit beim Anpassen eines Schiebereglers keine Feldgültigkeitsgrenzen oder ‑hintergründe darauf angewendet werden. - Schaltflächen und Textfelder (einschließlich
<textarea>) können im Allgemeinen wie normale Elemente formatiert werden. - Verwenden Sie
font-sizefür die Skalierung und andere Texteigenschaften, um die Typografie zu steuern.
Textfelder formatieren (<input> und <textarea>)
Für die meisten Styling-Zwecke (z.B. Farben, Rahmen, Hintergründe, Typografie) sollten diese Elemente wie normale Textcontainer behandelt werden.
- Verwenden Sie
:placeholder-shownund::placeholder, um Eingabeplatzhalter zu formatieren. - Verwenden Sie
field-sizing: content, um die Größe von Textfeldern an den Inhalt anzupassen. - Verwenden Sie für
<textarea>-Elementeresize: vertical, um die horizontale Größenänderung zu deaktivieren, oderresize: none, um alle Größenänderungen zu deaktivieren.
Steuerelemente für Multiple-Choice-Fragen (Auswahl, Optionsfelder, Kästchen)
- Um eine von vielen Optionen in einem Drop-down-Menü auszuwählen, verwenden Sie
<select>+appearance: base-select+::picker(select). Weitere Informationen finden Sie unter Branded Select Styling. - Auswahl einer oder mehrerer Optionen, die inline auf der Seite angeordnet sind: Verwenden Sie für jede Option ein
<input type=checkbox>- oder<input type=radio>-Element innerhalb eines<label>-Elements. Stil überlabel:has(:checked). - Stile für Kästchen, Optionsfelder und Schalter über
appearance: none+ generierte Inhalte (::before/::after) oder Hintergrundbilder, um den aktivierten Status darzustellen.
Nicht-textuelle <input>s (Schaltflächen, Schieberegler, Dateieingaben usw.)
- Dateieingaben: Verwenden Sie
::file-selector-button, um die Schaltfläche zu gestalten. - Verwenden Sie
<input>nicht mit einemtypevonbutton,submitoderreset. Verwenden Sie stattdessen<button>und gestalten Sie es wie ein normales Element. - Schieberegler: Verwenden Sie
appearance: none+ Thumb-Pseudoelemente (::-webkit-slider-thumb,::-moz-range-thumbusw.) und Track-Pseudoelemente (::-webkit-slider-runnable-track,::-moz-range-trackusw.) für eine detailliertere Steuerung.