CSS Outline
Die outline-Eigenschaft zeichnet eine Linie um ein Element – ähnlich wie border, aber ausserhalb des Box-Modells. Sie beeinflusst weder Layout noch Grösse des Elements. Am wichtigsten: outline ist die Grundlage für den Fokus-Ring, der Tastatur-Nutzenden zeigt, welches Element gerade aktiv ist.
Typische Anwendungsfälle
- Fokus-Indikator für Tastatur-Navigation (Accessibility-Pflicht)
- Hervorhebung ohne Layout-Verschiebung
- Debugging – schnell Elementgrenzen sichtbar machen
- Auswahl-Rahmen bei interaktiven Karten oder Listen
Outline-Eigenschaften
outline-styleLinienstil – ohne diesen bleibtoutlineunsichtbaroutline-widthDicke der Linieoutline-colorFarbe der Linie – Standardwert istauto; bei einem normalen Outline-Stil entspricht das meistcurrentColoroutline-offsetAbstand zwischen Element und OutlineoutlineKurzform für Style, Width und Color
Wichtig: Ohne outline-style (bzw. ohne die Kurzform, die einen Style enthält) bleibt die Outline unsichtbar – genau wie bei border.
1. outline-style
outline-style bestimmt das Aussehen der Linie. Die Werte entsprechen exakt denen von border-style.
noneKeine Outline (Standard)solidDurchgezogene LiniedashedGestrichelte LiniedottedGepunktete LiniedoubleDoppelte Liniegroove,ridge,inset,outset3D-Effekte, abhängig von der FarbeautoBrowser-eigener Fokus-Stil (kann vom Betriebssystem abweichen)
.solid { outline: 3px solid deeppink; }
.dashed { outline: 3px dashed deeppink; }
.dotted { outline: 3px dotted deeppink; }
.double { outline: 6px double deeppink; }
2. outline-width
outline-width akzeptiert Längeneinheiten oder die Schlüsselwörter thin, medium (Standard) und thick.
outline-width: thin; /* meist 1px */
outline-width: medium; /* meist 3px, Standard */
outline-width: thick; /* meist 5px */
outline-width: 4px; /* exakte Werte auch möglich */
3. outline-color
Jede gültige CSS-Farbe ist erlaubt. Der Standardwert ist auto. Bei einem normalen Outline-Stil entspricht das meist currentColor – die Outline übernimmt also die aktuelle Textfarbe des Elements.
.element {
color: darkred;
outline: 3px solid; /* outline-color fehlt -> wird darkred */
}
4. outline-offset
outline-offset erzeugt Abstand zwischen dem Element (bzw. seinem Border) und der Outline. Anders als bei border gibt es hier auch negative Werte – die Outline rutscht dann über den Elementrand hinweg nach innen.
0Outline liegt direkt am Element an (Standard)- positiver WertLücke zwischen Element und Outline
- negativer WertOutline verschiebt sich nach innen, über den Inhalt
.gap { outline: 3px solid crimson; outline-offset: 8px; }
.inward { outline: 3px solid crimson; outline-offset: -12px; }
outline und border-radius
In allen aktuellen Browsern folgt outline der abgerundeten Form von border-radius, statt eckig darüber zu liegen. Das war nicht immer so – ältere Browser zeichneten die Outline eckig, unabhängig vom border-radius des Elements.
.card {
border-radius: 20px;
outline: 4px solid darkorange;
outline-offset: 4px;
/* Outline ist ebenfalls abgerundet */
}
outline vs. border
Der entscheidende Unterschied: border ist Teil des Box-Modells und verändert die Grösse bzw. das Layout des Elements. outline wird darüber gezeichnet, ohne Platz zu beanspruchen – benachbarte Elemente rücken nicht zur Seite.
.mit-border { width: 120px; border: 15px solid teal; }
/* Element wird sichtbar breiter, Nachbar wird verdrängt */
.mit-outline { width: 120px; outline: 15px solid teal; }
/* Element bleibt gleich gross, Outline überlagert den Nachbarn */
borderTeil des Box-Modells, verändert Grösse/Layout, kann pro Seite unterschiedlich seinoutlineAusserhalb des Box-Modells, kein Einfluss auf Layout, immer rundherum gleich (keine einzelnen Seiten)
Fokus-Indikator nicht entfernen
Ein sichtbarer Fokus-Indikator zeigt Tastatur-Nutzenden, welches Element gerade ausgewählt ist. Wer outline: none oder outline: 0 verwendet, muss deshalb für einen gleichwertigen sichtbaren Ersatz sorgen. Ohne Ersatz wird der Fokus unsichtbar und die Anforderung aus WCAG 2.4.7 (Focus Visible) nicht erfüllt.
/* Nicht so: */
button:focus {
outline: none; /* Fokus-Indikator komplett weg, für niemanden mehr sichtbar */
}
Historisch wurde outline: none oft eingesetzt, weil der native Fokus-Ring bei jedem Mausklick unschön aufblitzte – nicht nur bei Tastatur-Bedienung. Die richtige Lösung dafür ist :focus-visible, nicht das komplette Entfernen.
:focus-visible
:focus-visible zeigt den Fokus-Ring nur dann, wenn der Browser einschätzt, dass er auch wirklich gebraucht wird – typischerweise bei Tastatur-Fokus, nicht bei einem Mausklick auf einen Button.
Klick den Button oben mit der Maus (kein Ring), dann tabbe mit der Tastatur dorthin (Ring erscheint).
/* Fokus-Ring nur zeigen, wenn er sinnvoll ist */
.button:focus-visible {
outline: 3px solid dodgerblue;
outline-offset: 3px;
}
/* Bei Klick-Fokus ohne Tastatur: kein Ring */
.button:focus:not(:focus-visible) {
outline: none;
}
Regel: outline: none nur zusammen mit :focus-visible als Ersatz einsetzen – niemals ohne funktionierenden Ersatz-Indikator.
Hoher Kontrast in Windows
Im Forced Colors Mode (z.B. Windows High Contrast) ersetzt das Betriebssystem viele Farben durch ein festes System-Farbschema. outline bleibt dabei zuverlässig erhalten und wird oft automatisch auf eine System-Fokusfarbe umgestellt – ein weiterer Grund, den Fokus-Ring über outline zu lösen statt z.B. nur über box-shadow oder Hintergrundfarben, die in diesem Modus verschwinden können.
Browser-Kompatibilität
- outline-style, outline-width, outline-color, outline-offset – alle modernen Browser
- outline folgt border-radius – alle aktuellen Browser-Versionen
- :focus-visible – wird von modernen Browsern unterstützt. Ältere Browser ignorieren den Selektor. Deshalb sollte bei Bedarf ein sichtbarer
:focus-Stil als Fallback bestehen bleiben.
Cheat Sheet
outline-styleLinienstil (none, solid, dashed, dotted, double, groove, ridge, inset, outset, auto)outline-widththin, medium, thick oder Längeneinheitoutline-colorFarbe, Standardwert istautooutline-offsetAbstand zum Element, auch negativ möglichoutlineKurzform für Style, Width, Color:focus-visibleFokus-Ring nur bei Bedarf anzeigen (i.d.R. Tastatur)
Kurz gesagt
outlinezeichnet eine Linie ausserhalb des Box-Modells – ohne Einfluss auf Layout oder Elementgrösse.- Ohne
outline-stylebleibt die Outline unsichtbar, genau wie beiborder. outline-offsetsteuert den Abstand zum Element, auch negativ (nach innen) möglich.- In modernen Browsern folgt
outlinedemborder-radiusdes Elements. outline: noneohne Ersatz entfernt den Fokus-Indikator und verstösst gegen WCAG 2.4.7.:focus-visiblezeigt den Ring gezielt bei Tastatur-Fokus, nicht bei jedem Mausklick.- Der Fokus-Ring gehört zu den wichtigsten Accessibility-Grundlagen einer Seite – nie ersatzlos entfernen.
Die Gestaltung interaktiver Elemente zeigen Cursor und Pointer Events.