list-style & ::marker

Zuletzt aktualisiert am 15. Februar 2026

list-style ist die Shorthand-Eigenschaft für das Erscheinungsbild von Listenpunkten. Sie fasst list-style-type, list-style-position und list-style-image zusammen. Mit list-style-type bestimmst du die Art des Aufzählungszeichens (Punkt, Kreis, Nummer), mit list-style-position ob es innerhalb oder außerhalb des Textflusses sitzt, und mit list-style-image kannst du ein eigenes Bild verwenden. Zusätzlich bietet das ::marker Pseudo-Element noch feinere Kontrolle über Farbe, Größe und Inhalt der Aufzählungszeichen.

Syntax
list-style: <type> <position> <image>
Initialwert
disc outside none
Vererbt
Ja
Animierbar
Nein
Shorthand für
list-style-typelist-style-positionlist-style-image

Grundlagen

list-style wirkt auf Elemente mit display: list-item, also standardmäßig auf <li>, <ul> und <ol>. Wenn du list-style auf ein <ul> oder <ol> setzt, wird die Eigenschaft an die <li>-Kindelemente vererbt.

Die häufigste Verwendung ist list-style: none, um Listenpunkte für Navigationsmenüs und andere nicht-dekorative Listen zu entfernen. Beachte dabei, dass das allein nicht das Standard-Padding der Liste entfernt. Dafür brauchst du zusätzlich padding: 0.

Das ::marker Pseudo-Element erlaubt dir seit einigen Jahren, Aufzählungszeichen direkt zu stylen, ohne auf ::before und content zurückgreifen zu müssen. Du kannst damit Farbe, Schriftgröße und sogar den Inhalt des Markers ändern. Bei <ol> hast du Zugriff auf die automatisch generierte Nummer.

Syntax & Werte

list-style-type

Wert Beschreibung Beispiel
disc Gefüllter Kreis (Standard für <ul>). list-style-type: disc
circle Leerer Kreis. list-style-type: circle
square Gefülltes Quadrat. list-style-type: square
decimal Dezimalzahlen 1, 2, 3 (Standard für <ol>). list-style-type: decimal
decimal-leading-zero Dezimalzahlen mit führender Null: 01, 02, 03. list-style-type: decimal-leading-zero
lower-alpha Kleinbuchstaben a, b, c. list-style-type: lower-alpha
upper-roman Römische Großbuchstaben I, II, III. list-style-type: upper-roman
none Kein Aufzählungszeichen. list-style-type: none
<string> Beliebiger String als Aufzählungszeichen (z.B. Emoji). list-style-type: "\1F449 "

list-style-position

Wert Beschreibung Beispiel
outside Marker außerhalb des Inhaltsbereichs (Standard). Mehrfachzeilen rücken unter der ersten Zeile ein. list-style-position: outside
inside Marker innerhalb des Inhaltsbereichs. Text umfließt den Marker bei Zeilenumbruch. list-style-position: inside

list-style-image

Wert Beschreibung Beispiel
none Kein Bild als Aufzählungszeichen (Standard). list-style-image: none
url() URL zu einem Bild, das als Aufzählungszeichen verwendet wird. list-style-image: url(marker.svg)

Beispiele

Marker-Typen im Überblick

Die verschiedenen list-style-type-Werte im direkten Vergleich.

Marker-Typen im Überblick
ul.punkte  { list-style-type: disc; }
ul.kreise  { list-style-type: circle; }
ul.quadrate { list-style-type: square; }
ol.zahlen  { list-style-type: decimal; }
ol.roemisch { list-style-type: upper-roman; }
ol.buchstaben { list-style-type: lower-alpha; }

Position: inside vs. outside

Der Unterschied zwischen inside und outside wird sichtbar, wenn Listeneinträge mehrzeilig sind. Bei outside (Standard) rückt der Text unter der ersten Zeile ein, bei inside umfließt er den Marker.

Position: inside vs. outside
/* Standard: Marker steht links vom Textblock */
ul { list-style-position: outside; }

/* Marker sitzt im Textfluss */
ul { list-style-position: inside; }

Eigenes Aufzählungszeichen mit String

Seit CSS3 kannst du einen beliebigen String als list-style-type verwenden. Das eignet sich für Emojis oder einfache Sonderzeichen.

String als Aufzählungszeichen
.todo    { list-style-type: "👉 "; }
.schritte { list-style-type: "→ "; }
.erledigt { list-style-type: "✓ "; }
.favoriten { list-style-type: "⭐ "; }

::marker Pseudo-Element

Mit ::marker kannst du das Aufzählungszeichen direkt stylen, ohne auf Workarounds mit ::before zurückzugreifen. Du kannst Farbe, Schriftgröße, Schriftstärke und content ändern.

::marker Pseudo-Element
/* Farbe und Gewicht ändern */
li::marker {
  color: #3b82f6;
  font-weight: 700;
}

/* Eigenen Inhalt setzen */
li::marker {
  content: "§ ";
  color: #7c3aed;
}

/* Nummerierte Liste stylen */
ol li::marker {
  color: #dc2626;
  font-weight: 700;
  font-size: 1.1em;
}

Das häufigste Pattern: Eine <ul> als Navigation verwenden, Listenpunkte entfernen und horizontal anordnen.

Navigation ohne Listenpunkte
nav ul {
  list-style: none;
  margin: 0;
  padding: 0;     /* Wichtig: Standard-Padding entfernen */
  display: flex;
  gap: 4px;
}

nav a {
  text-decoration: none;
  padding: 8px 14px;
  border-radius: 6px;
}

Barrierefreiheit

Safari entfernt bei list-style: none die Listensemantik im Accessibility-Tree. Das bedeutet, dass Screenreader die Liste nicht mehr als Liste ankündigen und auch nicht die Anzahl der Einträge vorlesen. Wenn die Listensemantik wichtig ist (z.B. bei einer Aufzählung von Inhalten), füge role="list" auf dem <ul> oder <ol> hinzu. Für Navigationsmenüs ist das weniger kritisch, weil dort ohnehin ein <nav>-Element die Semantik liefert.

Wenn du ::marker mit content verwendest, beachte, dass Screenreader den Marker-Content vorlesen können. Ein dekoratives Emoji als content: "🔥 " wird möglicherweise als “Feuer” vorgelesen, was verwirrend sein kann. Für rein dekorative Marker setze content nur, wenn es den Inhalt nicht stört, oder verwende stattdessen list-style-type mit einem String-Wert.

Listen vermitteln Struktur: Nutzer von Screenreadern können mit Tastenkombinationen direkt zur nächsten Liste springen und erfahren die Anzahl der Einträge. Verwende <ul> und <ol> also nur für tatsächliche Listen und nicht als allgemeines Container-Element.

Häufige Fehler

  • list-style: none ohne padding: 0: Das Standard-Padding der Liste bleibt erhalten und erzeugt einen unerwarteten Einzug. Setze immer auch padding: 0 (und margin: 0), wenn du Listenpunkte entfernst.
  • list-style-image statt ::marker oder ::before für Bilder: list-style-image bietet keine Kontrolle über Größe und Position des Bildes. Besser: ::marker { content: url(icon.svg); } oder ::before mit background-image und kontrollierten Dimensionen.
  • list-style-type und ::marker { content } gleichzeitig: Wenn du content auf ::marker setzt, überschreibt es den list-style-type komplett. Setze also entweder das eine oder das andere.
  • Vererbung nicht beachten: list-style wird vererbt. Wenn du es auf einem <ul> setzt, gilt es für alle verschachtelten Listen darin. Setze es gezielt auf die gewünschte Verschachtelungsebene.
  • Safari-Bug bei list-style: none ignorieren: In Safari verliert eine Liste mit list-style: none ihre Semantik. Füge role="list" hinzu, wenn die Listensemantik erhalten bleiben soll.

Browser-Kompatibilität

list-style und alle Sub-Properties werden von allen Browsern vollständig unterstützt. ::marker wird seit 2021 von allen modernen Browsern unterstützt, allerdings mit eingeschränkten stylebaren Eigenschaften (color, font-size, content).

ClientUnterstützungHinweise
ChromeKomplett
FirefoxKomplett
SafariKomplett
EdgeKomplett
OperaKomplett

Email-Kompatibilität

list-style-type funktioniert in den meisten Email-Clients. list-style-image und ::marker werden kaum unterstützt.

ClientUnterstützungHinweise
Apple MailKomplett
GmailTeilweiselist-style-type funktioniert. list-style-image und ::marker werden nicht unterstützt
OutlookTeilweiseNur grundlegende list-style-type Werte (disc, decimal). list-style-image wird ignoriert
ThunderbirdKomplett
Yahoo MailTeilweiselist-style-type funktioniert. list-style-image eingeschränkt

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.