user-select, resize & appearance

Zuletzt aktualisiert am 3. Juli 2026

Diese drei Properties geben dir Kontrolle über verschiedene Aspekte der Benutzerinteraktion: user-select bestimmt, ob und wie Text selektiert werden kann, resize erlaubt Nutzern das Ändern der Elementgröße, und appearance entfernt natives Browser-Styling von Formularelementen. Zusammen ermöglichen sie präzise Kontrolle über das Interaktionsverhalten deiner Oberfläche.

Syntax
user-select: auto | text | none | all | contain
Initialwert
auto
Vererbt
Nein
Animierbar
Nein

Grundlagen

user-select kontrolliert, ob Nutzer Text in einem Element markieren können. Der Wert none verhindert Selektion (nützlich für UI-Elemente wie Buttons), all selektiert den gesamten Inhalt bei einem Klick (perfekt für Code-Snippets), und text erlaubt normale Textselektion.

resize macht Elemente größenveränderbar, ähnlich wie Textareas standardmäßig eine kleine Ecke zum Ziehen haben. Du kannst die Richtung kontrollieren (horizontal, vertikal oder beides) und Nutzern so erlauben, Elemente nach ihren Bedürfnissen anzupassen. Wichtig: Das Element braucht overflow (nicht visible), damit resize funktioniert.

appearance entfernt das native Browser-Styling von Formularelementen wie Checkboxen, Radio-Buttons oder Select-Dropdowns. Mit appearance: none kannst du diese Elemente komplett custom stylen, ohne dass das Standard-Styling dazwischenfunkt. Du bist dann aber selbst verantwortlich für alle States wie :focus, :checked oder :disabled.

Syntax & Werte

user-select

Wert Beschreibung Beispiel
auto Standardverhalten: Text ist selektierbar (außer bei UI-Elementen wie Buttons)
text Text kann selektiert werden (erzwingt Selektierbarkeit)
none Text kann nicht selektiert werden
all Der gesamte Inhalt wird bei einem Klick selektiert
contain Selektion kann im Element starten, aber nicht darüber hinaus (bisher von keinem Browser unterstützt)

resize

Wert Beschreibung Beispiel
none Element ist nicht größenveränderbar (Standard)
both Element kann horizontal und vertikal verändert werden
horizontal Element kann nur horizontal verändert werden
vertical Element kann nur vertikal verändert werden
block Element kann in Block-Richtung verändert werden (vertikal in horizontalen Sprachen)
inline Element kann in Inline-Richtung verändert werden (horizontal in horizontalen Sprachen)

appearance

Wert Beschreibung Beispiel
none Entfernt alle nativen Browser-Styles (für Custom-Styling)
auto Standard Browser-Styling bleibt erhalten

Beispiele

user-select im Vergleich

Drei verschiedene user-select Werte
.select-none {
  user-select: none;
}

.select-all {
  user-select: all;
}

.select-text {
  user-select: text;
}

Code-Snippet mit select-all

Code-Block mit automatischer Komplett-Selektion
.code-snippet {
  font-family: 'Courier New', monospace;
  user-select: all;
}

.code-label {
  user-select: none;
}

Resizable Container

Container mit resize: both
.resize-container {
  resize: both;
  overflow: auto;
  min-width: 200px;
  min-height: 150px;
  max-width: 600px;
  max-height: 400px;
}

Custom Checkbox mit appearance: none

Custom-gestylte Checkbox ohne natives Styling
.custom-checkbox {
  appearance: none;
  width: 24px;
  height: 24px;
  border: 2px solid #cbd5e1;
  border-radius: 4px;
}

.custom-checkbox:checked {
  background: #1a56db;
  border-color: #1a56db;
}

.custom-checkbox:checked::after {
  content: '✓';
  color: white;
}

.custom-checkbox:focus-visible {
  outline: 2px solid #1a56db;
}

Drag-Handle mit user-select: none

Drag-Handles ohne störende Textselektion
.drag-handle {
  cursor: grab;
  user-select: none;
}

.drag-handle:active {
  cursor: grabbing;
}

.item-content {
  user-select: text;
}

Barrierefreiheit

Verwende user-select: none niemals auf eigentlichem Inhalt wie Fließtext oder Überschriften. Nutzer müssen Text kopieren können. Die Property ist nur für UI-Elemente wie Buttons, Icons oder Drag-Handles gedacht. Screen Reader ignorieren user-select komplett, es betrifft nur die visuelle Selektion.

Deaktiviere resize nicht auf <textarea>-Elementen, außer du hast einen sehr guten Grund. Viele Nutzer verlassen sich darauf, das Textfeld an ihre Bedürfnisse anzupassen. Wenn du ein Custom-Resize-Pattern verwendest, stelle sicher dass es auch per Tastatur funktioniert.

Bei appearance: none bist du komplett selbst verantwortlich für alle Zustände: :focus-visible für Tastaturnavigation, :disabled für deaktivierte States, und :checked für Checkboxen/Radio-Buttons. Vergiss niemals den Focus Indicator. Er ist essentiell für Tastaturnutzer. Teste deine Custom-Formularelemente immer mit Screenreadern und nur per Tastatur.

Häufige Fehler

  • user-select: none auf Paragraphen oder Artikeltext: Text muss immer kopierbar bleiben. Die Property ist nur für UI-Elemente wie Buttons oder Tabs gedacht.

  • resize ohne overflow: resize funktioniert nur, wenn das Element overflow: auto, hidden oder scroll hat. Mit dem Standard-Wert visible passiert nichts.

  • appearance: none ohne Custom-Styling: Wenn du das native Styling entfernst, musst du alle States selbst stylen: normal, hover, focus, disabled, checked. Sonst haben Nutzer keine visuelle Rückmeldung.

  • Focus Indicator nach appearance: none vergessen: Der native Focus Ring verschwindet mit dem Styling. Du brauchst unbedingt ein eigenes :focus-visible Styling, sonst ist das Element per Tastatur nicht nutzbar.

  • user-select: all auf mehrzeiligen Content: Bei langen Texten oder mehreren Absätzen ist select-all nervig. Die Property eignet sich nur für kurze Snippets wie Code, Telefonnummern oder Tracking-IDs.

Browser-Kompatibilität

user-select, resize und appearance werden von allen modernen Browsern unterstützt. Safari braucht für user-select weiterhin das Präfix -webkit-user-select. Der Wert contain wird bisher von keinem Browser unterstützt.

ClientUnterstützungHinweise
ChromeKomplett
FirefoxKomplett
SafariKomplettuser-select nur mit -webkit-Präfix
EdgeKomplett
OperaKomplett

Email-Kompatibilität

user-select, resize und appearance werden in E-Mail-Clients nicht unterstützt. Nutzer-Interaktionen wie Resizing oder Custom-Formularelemente existieren in E-Mails nicht.

ClientUnterstützungHinweise
Apple MailKeineNicht unterstützt
GmailKeineNicht unterstützt
OutlookKeineNicht unterstützt
Yahoo MailKeineNicht unterstützt
ThunderbirdKeineNicht unterstützt

Verwandte Eigenschaften

Bleib auf dem Laufenden

Erhalte neue Inhalte direkt in dein Postfach

Mit der Anmeldung akzeptierst du unsere Datenschutzerklärung. Du kannst dich jederzeit über den Link in den E-Mails wieder abmelden.

Was erwartet dich?

Neue Artikel & Videos

Wenn ich was Neues veröffentliche, erfährst du's hier zuerst.

Plattform & Kurs-Updates

Neue Kurse, Referenz-Updates und gelegentlich Sonderpreise zum Launch.

Einmal die Woche in deinem Postfach

Kurz, auf den Punkt, kein Spam.