HTML-Listen: ul, ol und li
HTML hat zwei Hauptarten von Listen. <ul> (unordered list) zeigt Aufzählungspunkte, <ol> (ordered list) zeigt Nummern. Jeder Eintrag ist ein <li> (list item).
Nimm <ol>, wenn die Reihenfolge etwas bedeutet (Schritte, Ranglisten, ein Inhaltsverzeichnis), und <ul>, wenn nicht. Screenreader sagen beide als Liste mit Anzahl an, etwa „Liste, 3 Einträge“. Deshalb ist eine echte Liste besser als Zeilen, die mit einem getippten „•“ oder „1.“ beginnen.
Eine Liste darf direkt nur <li>-Elemente enthalten. Alles andere, auch Überschriften, Absätze und andere Listen, kommt in ein <li>.
Stile für Aufzählungspunkte
list-style-type am <ul> ändert den Aufzählungspunkt. Das Pseudo-Element ::marker stylt den Punkt oder die Nummer selbst, getrennt vom Text:
Ein String als Wert nimmt diesen Text als Aufzählungszeichen. "\2713 " ist ein Häkchen, gefolgt von einem Leerzeichen: Das erste Leerzeichen beendet nur das Escape \2713. ::marker akzeptiert nur wenige Eigenschaften, vor allem color, font-size und andere Schrifteigenschaften. Das reicht für den häufigen Wunsch nach farbigen Punkten, ohne zusätzliches Markup.
Nummerierte Listen: Zahlen, Buchstaben und römische Zahlen
<ol> hat Attribute für seine Nummerierung:
| Attribut | Beispiel | Ergebnis |
|---|---|---|
type | type="a" | a, b, c (A, i, I und 1 gehen auch) |
start | start="5" | Beginnt bei 5 zu zählen |
reversed | reversed | Zählt rückwärts |
value (an <li>) | <li value="10"> | Dieser Eintrag ist 10, die folgenden zählen von dort weiter |
type ist in HTML in Ordnung, weil die Buchstaben Bedeutung tragen können („wähle Option B“). Für rein optische Änderungen macht CSS list-style-type: upper-alpha oder lower-roman dasselbe.
Verschachtelte Listen
Eine Unterliste kommt in das <li>, zu dem sie gehört, nach dem Text dieses Eintrags. Browser ändern den Aufzählungspunkt auf jeder Ebene: gefüllter Kreis, dann leerer Kreis, dann Quadrat.
Achte darauf, wo </li> steht: Der Eintrag „Frontend“ wird erst nach seiner Unterliste geschlossen. Schließt du ihn vor dem <ul>, steht die Unterliste direkt im äußeren <ul>, und das ist ungültig, auch wenn es fast gleich aussieht.
Nummerierte Listen werden genauso verschachtelt, und die Nummerierung beginnt in jeder Unterliste wieder bei 1. Für Nummern wie 1.1 und 1.2 brauchst du CSS-Counter.
Beschreibungslisten: dl, dt und dd
Eine Beschreibungsliste ordnet Begriffen ihre Beschreibungen zu: ein Glossar, die Details einer Bestellung, Paare im FAQ-Stil. <dt> ist der Begriff und <dd> die Beschreibung:
Ein Begriff kann mehrere <dd> haben, und mehrere <dt> können sich ein <dd> teilen. Browser rücken <dd> standardmäßig ein; die margin-Regel oben entfernt das. Für Daten mit mehreren Spalten passt eine Tabelle besser.
Listen ohne Punkte: Menüs und horizontale Listen
Navigationsmenüs sind Listen von Links. Entferne die Punkte mit list-style: none und die Einrückung mit padding: 0 und ordne die Einträge dann mit Flexbox in einer Reihe an:
Für Screenreader ist die Liste immer noch eine Liste („Navigation, Liste, 3 Einträge“). Eine Ausnahme: Safari mit VoiceOver kann die Listenbedeutung verwerfen, wenn die Punkte entfernt werden. Wenn die Anzahl für deine Nutzer wichtig ist, füg dem <ul> role="list" hinzu.
Standardabstände
Browser geben Listen oben und unten einen Außenabstand von 1em und rücken sie mit padding-inline-start: 40px ein; dort sitzen die Aufzählungspunkte. Der Innenabstand liegt auf der Anfangsseite, bei Sprachen, die von rechts nach links laufen, wandern Punkte und Einrückung also automatisch auf die andere Seite. Entfernst du den Innenabstand, rutschen die Punkte aus dem Listenkasten heraus und können abgeschnitten werden; behalte also etwas Innenabstand oder nimm list-style-position: inside.
Häufige Fehler
<li>ohne Elternliste. Es muss in<ul>,<ol>oder<menu>stehen.- Eine verschachtelte Liste außerhalb ihres
<li>. Setz die Unterliste in den Eintrag, zu dem sie gehört. - Text oder andere Tags direkt in
<ul>, etwa<ul><p>Note</p><li>...</li></ul>. Verschieb sie in ein<li>oder aus der Liste heraus. - Punkte oder Nummern von Hand tippen mit
•und<br>. Screenreader hören einen Absatz, keine Liste. list-style: noneohnepadding: 0, sodass eine rätselhafte Einrückung von 40 Pixeln bleibt.<ol>wegen des Aussehens verwenden. Wenn die Reihenfolge egal ist, nimm<ul>und style es.
Häufig gestellte Fragen
Wie mache ich Aufzählungspunkte in HTML?
Mit einer ungeordneten Liste: <ul> mit einem <li> pro Punkt, zum Beispiel <ul><li>Milk</li><li>Eggs</li></ul>. Der Browser zeichnet vor jeden Eintrag einen Punkt und rückt die Liste ein.
Was ist der Unterschied zwischen ul und ol?
<ul> ist eine ungeordnete Liste mit Aufzählungspunkten, für Einträge, deren Reihenfolge egal ist. <ol> ist eine geordnete Liste mit Nummern, für Schritte und Ranglisten, bei denen die Reihenfolge zählt. Beide enthalten <li>-Einträge.
Wie entferne ich die Aufzählungspunkte einer Liste in HTML?
Setz im CSS list-style: none an das <ul>. Setz außerdem padding-inline-start: 0 (oder padding: 0), um die Einrückung zu entfernen, die der Browser für die Punkte hinzufügt.
Wie lasse ich eine nummerierte Liste bei einer anderen Zahl beginnen?
Mit dem Attribut start: <ol start="5"> nummeriert den ersten Eintrag mit 5. reversed zählt stattdessen rückwärts, und value an einem <li> legt die Nummer dieses Eintrags und der folgenden fest.
Wie mache ich eine verschachtelte Liste in HTML?
Setz das innere <ul> oder <ol> in ein <li> der äußeren Liste, nach dem Text dieses Eintrags. Eine Liste direkt in einem anderen <ul>, zwischen <li>-Elementen, ist ungültig.