) geben. Für feinere Kontrolle sind container-Elemente (div.section) nützlich, auf denen lokale counter-reset-Anweisungen angewendet werden.
Beispiel: Kapitel, Abschnitt, Vers (CSS)
Setze auf body den Hauptzähler: body { counter-reset: chapter; } H1 inkrementiert Kapitel und setzt den Abschnittszähler zurück: h1 { counter-increment: chapter; counter-reset: section; } h1::before { content: "Kapitel " counter(chapter) ": "; font-weight: bold; } H2 für Abschnitt: h2 { counter-increment: section; counter-reset: verse; } h2::before { content: counter(chapter) "." counter(section) " "; } Für Vers-Nummerierung: .verse { counter-increment: verse; } .verse::before { content: counter(chapter) "." counter(section) "." counter(verse) " "; font-variant-numeric: tabular-nums; }
Alternative/Erweiterung mit JavaScript
Wenn die Struktur dynamisch ist (ein- und ausblendbare Kapitel, verschachtelte Listen, oder komplexe Bedingungen), ist JavaScript flexibler. Ein kurzes Script traversiert die DOM-Hierarchie, erhöht Zähler pro Ebene und setzt die Nummern als Textknoten oder data-Attribute. Vorteil: komplexe Logik, Anpassung an responsives Verhalten, Generierung von Sprungmarken (IDs) möglich. Nachteil: Abhängigkeit von JS für Nummern (CSS-Lösung funktioniert auch ohne JS).
Barrierefreiheit und Styling-Hinweise
Nummern sollten semantisch nicht den Inhalt ersetzen — Screenreader können CSS-Generated Content teils ignorieren. Bei wichtiger numerischer Information empfiehlt sich das Einfügen in das DOM (z. B. ), alternativ data-attribute oder aria-labels ergänzen. Für konsistente Optik nutze tabular-nums in font-feature-settings oder font-variant-numeric. Achte auf ausreichenden Kontrast und korrekte Fokusreihenfolge, wenn Nummern interaktive Sprunglinks erhalten.
Fazit
Für die meisten Fälle empfiehlt sich eine reine CSS-Lösung mit counters für einfache, performante und zugängliche automatische Nummerierung. JavaScript ergänzt bei dynamischen Anforderungen oder wenn die Nummern in der Dokumentstruktur selbst stehen müssen. Mit sauberer HTML-Semantik und ergänzender ARIA- oder DOM-Beschriftung erreichst du sowohl optisch korrekte als auch zugängliche Nummerierungen.
