CSS-Benutzeroberfläche
Optional Advanced hat gerade eine Schablone auf ein Foto gelegt. Diese Sitzung ist ein anderes Werkzeugset: Benutzeroberfläche. Sie ändern Zeiger, Caret und natives Widget-Chrome. Sie stanzen kein Loch ins Hero-Bild und zerlegen keinen Artikel in Zeitungsspalten.
Direkte Antwort
CSS-UI-Eigenschaften geben Interaktionshinweise. cursor wählt die Mausform (pointer, wait, help, not-allowed…). resize macht eine Ecke ziehbar — meist auf einem textarea. outline mit outline-offset zeichnet einen Fokusring, der keinen Layoutplatz nimmt (Outline kennen Sie aus dem Box-Modell; hier ist es die Tastaturgewohnheit). user-select dämpft versehentliches Markieren. caret-color färbt den blinkenden Einfügepunkt. appearance (und -webkit-appearance) kann natives Chrome abstreifen, damit Sie das Steuerelement neu gestalten. Fokus sichtbar lassen. Die ganze Seite nicht zum unauswählbaren Poster machen.
Warum das keine Maske und keine Spalte ist
Eine Maske entscheidet, welche Pixel einer Box sichtbar bleiben. Mehrspalten zerlegen einen Textstrom. UI-Eigenschaften tun beides nicht. Breite und Höhe bleiben, außer resize greift. Filter und mask-image gehören zur Grafik. Hier lautet die Frage: „Sieht das klickbar aus? Kann ich tippen? Kann ich die Box vergrößern? Sieht die Tastatur, wo sie ist?“
Cursor — die Wahrheit sagen
cursor ist ein Versprechen. pointer heißt „das ist klickbar.“ Nur auf echte Buttons und Links. Keine Hand auf eine Überschrift, die nichts tut.
a.nav-link,
button.save {
cursor: pointer;
}
button[disabled] {
cursor: not-allowed;
}
.help-hint {
cursor: help;
}
.busy-panel {
cursor: wait;
}
default ist der Pfeil. text ist der I-Balken über markierbarem Text. grab / grabbing passen zu Ziehgriffen. Eigene url(...)-Cursor gibt es; klein halten und immer ein Fallback-Schlüsselwort listen. Ein lügender Cursor ist schlimmer als keiner: Leute klicken einen Slogan und nichts passiert.
Resize — eine Box wachsen lassen, kein Layout
resize wirkt auf Boxen mit Overflow. Alltag: ein Notizfeld:
textarea.notes {
min-height: 6rem;
min-width: 16rem;
max-width: 100%;
resize: vertical;
overflow: auto;
}
Werte: none, both, horizontal, vertical. Mit overflow ungleich visible koppeln, sonst fehlt der Griff. Nicht resize: both auf jede Karte streuen. min-height / max-width halten das Feld in der Spur.
Outline als Fokusring
Im Box-Modell sitzt Outline außerhalb des Borders und nimmt keinen Platz. Im UI-Werkzeugkasten behalten Sie den Ring für Tastaturfokus — oft mit :focus-visible, damit Mausklicks nicht jedes Mal eine Box ziehen:
button.save:focus-visible {
outline: 3px solid #2563eb;
outline-offset: 3px;
}
button.save:focus:not(:focus-visible) {
outline: none;
}
Kein globales *:focus { outline: none; }, es sei denn, jedes Steuerelement hat einen ebenso sichtbaren Ersatz. outline-offset schiebt den Ring weg, ohne Nachbarn zu verschieben. Das ist weder border (ändert die Größe) noch eine Masken-Überblendung auf dem Button-Label.
user-select — versehentliches Markieren stoppen
Auswahl ist ein Feature. Nur dämpfen, wo ein Doppelklick keine blaue Fläche malen soll — Toolbar-Label, Drag-Chip — nicht der Artikel.
.toolbar-label {
user-select: none;
}
article.body {
user-select: text;
}
none blockiert Highlighting. text ist der lesbare Default. all markiert das ganze Element mit einem Klick. Prefixe (-webkit-user-select) gibt es noch in altem WebKit. Auswahl nicht auf Rechtstext, Preise oder Fehlermeldungen legen, die man kopieren muss.
caret-color — den Einfügepunkt tönen
Das Caret ist der blinkende Balken im Feld. An die Marke anpassen ohne ihn zu verstecken:
input.email,
textarea.notes {
caret-color: #0f766e;
color: #0f172a;
}
caret-color: auto folgt der Textfarbe. caret-color: transparent „fürs saubere Look“ ist eine Falle. Das ist nicht color für die ganze Seite und nicht mask-image auf der Glyphe.
appearance — native Widgets neu kleiden
Browser malen Checkboxen und Suchfelder mit nativem Chrome. appearance: none (plus -webkit-appearance: none) zieht die Haut ab:
input.search {
appearance: none;
-webkit-appearance: none;
border: 1px solid #94a3b8;
border-radius: 0.5rem;
padding: 0.5rem 0.75rem;
}
input[type="checkbox"].tick {
appearance: none;
-webkit-appearance: none;
width: 1.15rem;
height: 1.15rem;
border: 2px solid #334155;
border-radius: 0.25rem;
}
Nach none schulden Sie Border, Checked-Zustand und Fokusring. Eine unsichtbare Checkbox ist kein Custom-Control. Unterstützung variiert; das echte Widget testen. appearance repariert keine Maske und ersetzt kein Mehrspaltenlayout.
UI vs Maske vs Spalten vs Outline-als-Box
📊 UI vs mask vs columns vs outline
| Tool | Job | Poor fit |
|---|---|---|
cursor / resize / caret-color / appearance |
Interaction chrome on controls | Stenciling a photo; newspaper columns |
user-select |
Limit highlight on chrome, not articles | Hiding copy people must paste |
outline + :focus-visible |
Keyboard focus ring (no layout space) | Replacing border math; fading labels with a mask |
mask-image |
Soft holes on one element’s pixels | Pointer shape; growing a textarea |
Multi-column (column-*) |
Fragment flowing text | Cursors, carets, native widget skin |
Optional Advanced nutzte Spalten für Prosa und Masken für Bilder. Benutzeroberfläche ist die Control-Schicht. column-count auf einem Einstellungsformular oder mask-image auf dem Submit-Button macht das Formular nicht „UI-mäßiger“.
Was Sie nicht wegstylen sollten
Nicht jeden nativen Hinweis entfernen. Scrollbars, Carets und Fokusringe existieren aus gutem Grund. Ist ein Control disabled, sind cursor: not-allowed plus echtes disabled ruhiger als eine Maske, die das Label verschluckt.
.ok-ui {
cursor: pointer;
outline-offset: 2px;
}
.not-a-stencil {
/* don't: mask-image on the submit label to “soften” the click */
}
.not-a-newspaper {
/* don't: column-count on a login form to look advanced */
}
Foto-Kante → zurück zur Maske. Langer Artikel → Spalten oder normaler Blockfluss. „Fühlt sich nicht klickbar an“ → cursor und ein echtes Control, kein Deko-Filter.
Selbst ausprobieren
cursor: pointerauf einen echten<button>,not-allowedauf[disabled].- Einem
textarearesize: vertical,min-heightundoverflow: autogeben. :focus-visible-Outline plusoutline-offset— per Tab ansteuern.user-select: nonenur auf einem Toolbar-Chip; Artikel bleibt markierbar.caret-colorim Input tönen. Feld nicht maskieren, keincolumn-count.
Typische Fehler
cursor: pointerauf Text, der kein Link oder Button istresize: bothauf Layout-Karten und Nav-Leisten- Globales
outline: noneohne:focus-visible-Ersatz user-select: noneauf ganzen Seiten, Preisen oder Fehlertextcaret-color: transparent„für den Look“appearance: noneohne Border, Checked-Stil und Fokusring- Maske oder Mehrspalten als UI-Politur missverstehen
Kurzfassung
- UI-CSS hintet Interaktion: Zeiger, Resize, Caret, natives Chrome
cursormuss wahr sein;resizegehört auf Felder, nicht auf die Page-Shell- Sichtbaren Fokusring behalten;
user-selectundcaret-colorleicht anfassen appearance: nonenur, wenn Sie das Widget komplett neu stylen- Keine Masken-Schablone und keine Zeitungsspalten
- Optional Advanced als Nächstes: 3D-Transforms (
transforms-3d)
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt