CSS counter-reset Eigenschaft
Die CSS counter-reset-Eigenschaft erstellt und initialisiert CSS-Zähler. Beispiele und Erklärungen mit W3Docs.
Die Eigenschaft counter-reset erstellt einen oder mehrere CSS-Zähler und setzt jeden auf einen Startwert. Trotz des Namens besteht ihre Hauptaufgabe darin, einen Zähler zu initialisieren, damit er später verwendet werden kann — sie setzt nicht einfach einen vorhandenen Zähler zurück auf null, sondern bringt den Zähler im aktuellen Gültigkeitsbereich zum Existieren.
CSS-Zähler sind Variablen, die vom Browser verwaltet werden und deren Werte durch CSS-Regeln erhöht werden können, um zu verfolgen, wie oft sie verwendet werden. Sie ermöglichen es, Abschnitte, Kapitel, Listenelemente oder beliebige wiederholte Elemente vollständig in CSS zu nummerieren, ohne Markup-Änderungen oder JavaScript.
Ein Zähler ist nur als Teil eines Trios von Eigenschaften nützlich:
- counter-reset — erstellt den Zähler und gibt ihm einen Startwert (diese Seite).
- counter-increment — erhöht den Wert des Zählers, normalerweise einmal pro übereinstimmendem Element.
- content — zeigt den Wert des Zählers über die Funktion
counter()odercounters()an, typischerweise innerhalb eines ::before-Pseudo-Elements.
Diese Seite behandelt die Syntax von counter-reset, wie der Zählerbereich funktioniert, die Nummerierung verschachtelter Abschnitte, die Verwendung negativer und benutzerdefinierter Startwerte sowie die Werte, die die Eigenschaft akzeptiert.
So funktioniert es
Jede counter-reset-Deklaration nimmt einen Zählernamen, den Sie selbst wählen (zum Beispiel section), gefolgt von einem optionalen ganzzahligen Startwert:
/* "section" counter created, starts at 0 */
counter-reset: section;
/* "section" counter created, starts at 5 */
counter-reset: section 5;
/* multiple counters in one declaration */
counter-reset: chapter 0 page 1;Wenn Sie die Zahl weglassen, beginnt der Zähler bei 0. Das erste übereinstimmende Element führt dann counter-increment vor dem Lesen von content aus, sodass ein Zähler, der bei 0 beginnt und um 1 erhöht wird, beim ersten Element als 1 angezeigt wird — was normalerweise gewünscht ist.
Der Gültigkeitsbereich ist wichtig. Ein mit counter-reset erstellter Zähler ist auf das Element beschränkt, für das er deklariert wurde, sowie auf dessen Nachkommen und nachfolgende Geschwister. Genau das ermöglicht es, einen Unter-Zähler für jeden Abschnitt zurückzusetzen: Durch Angabe von counter-reset: subsection bei jedem h2 erhält jeder Abschnitt seinen eigenen neuen subsection-Zähler. Das folgende Beispiel zur verschachtelten Nummerierung basiert auf diesem Verhalten.
| Anfangswert | none |
|---|---|
| Gilt für | Alle Elemente. |
| Vererbt | Nein. |
| Animierbar | Nein. |
| Version | CSS2 |
| DOM-Syntax | object.style.counterReset = "section" ; |
Syntax
counter-reset: none | name number | initial | inherit;Der name ist ein von Ihnen gewählter Bezeichner, und number ist eine optionale ganze Zahl (sie kann negativ sein). Sie können mehrere name number-Paare in einer Deklaration auflisten, um mehrere Zähler gleichzeitig zu erstellen.
Beispiel: Einen Zähler mit JavaScript setzen
counter-reset ist auch über das DOM als element.style.counterReset erreichbar. Klicken Sie auf "Try it", um den section-Zähler auf 5 zurückzusetzen, sodass die Überschriften ab 6 neu nummeriert werden.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
h2::before {
counter-increment: section;
content: "Book " counter(section) ". ";
}
</style>
</head>
<body>
<p>Click the "Try it" button to set the counter-reset property:</p>
<button onclick="myFunction()">Try it</button>
<h2>HTML Tutorials</h2>
<h2>JavaScript Tutorials</h2>
<h2>CSS Tutorials</h2>
<script>
function myFunction() {
document.body.style.counterReset = "section 5";
}
</script>
</body>
</html>Beispiel mit negativem Inkrement (rückwärts zählen)
Negative Zahlen sind sowohl als Startwerte als auch bei counter-increment erlaubt. Hier wird der Zähler bei 0 erstellt und das Inkrement ist -1, sodass jede Überschrift herunterzählt: -1, -2, -3, -4.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
body {
/* create "my-counter", start at 0 */
counter-reset: my-counter;
}
h2::before {
/* decrease "my-counter" by 1 on each h2 */
counter-increment: my-counter -1;
content: "Section " counter(my-counter) ". ";
}
</style>
</head>
<body>
<h2>HTML Tutorial</h2>
<h2>CSS Tutorial</h2>
<h2>JavaScript Tutorial</h2>
<h2>PHP Tutorial</h2>
</body>
</html>Beispiel mit nummerierten Abschnitten und Unterabschnitten
Dies ist die häufigste reale Verwendung von counter-reset: verschachtelte Nummerierung wie 1.1, 1.2, 2.1. Der subsection-Zähler wird bei jedem h2 zurückgesetzt, sodass jeder Abschnitt seine Unterabschnittsnummerierung ab 1 neu startet. Ohne diesen Reset pro h2 würden die Unterabschnitte über das gesamte Dokument hinweg weiter ansteigen.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
body {
/* Set "section" to 0 */
counter-reset: section;
}
h2 {
/* Set "subsection" to 0 */
counter-reset: subsection;
}
h2::before {
counter-increment: section;
content: "Book " counter(section) ": ";
}
h3::before {
counter-increment: subsection;
content: counter(section) "." counter(subsection) " ";
}
</style>
</head>
<body>
<h2>HTML</h2>
<h3>HTML Basics</h3>
<h3>HTML Templates</h3>
<h3>HTML References</h3>
<h3>HTML Tags</h3>
<h2>CSS</h2>
<h3>CSS Basics</h3>
<h3>CSS References</h3>
<h3>CSS Advanced</h3>
<h3>CSS Guides</h3>
<h3>CSS Selectors</h3>
<h3>CSS Properties</h3>
</body>
</html>Werte
| Wert | Beschreibung |
|---|---|
| none | Zähler werden nicht erhöht. |
| name number | Name legt den Namen des zurückzusetzenden Zählers fest. Number legt den Wert fest, auf den der Zähler bei jedem Auftreten des Elements zurückgesetzt wird. Standardmäßig 0, wenn nicht angegeben. |
| initial | Setzt die Eigenschaft auf ihren Standardwert. |
| inherit | Erbt die Eigenschaft vom übergeordneten Element. |
Häufige Fallstricke
- Allein wird nichts angezeigt.
counter-reseterstellt lediglich den Zähler. Sie benötigen dennochcounter-increment, um ihn zu erhöhen, undcontent: counter(name), um ihn anzuzeigen. Eine Seite mit nurcounter-resetzeigt keine Zahlen an. counter-resetvs.counter-set.counter-reseterstellt einen Zähler im aktuellen Gültigkeitsbereich; das neuerecounter-setändert nur den Wert eines bereits vorhandenen Zählers und erstellt nie einen neuen Bereich. Verwenden Siecounter-reset, wenn die Nummerierung innerhalb eines Abschnitts neu starten soll.- Inkrement läuft vor der Anzeige. Da das Inkrement bei einem
::beforevor dem Lesen voncontentstattfindet, zeigt ein Zähler, der bei0beginnt und um+1erhöht wird, beim ersten Element1an. Starten Sie mit einem anderen Wert, wenn Sie eine andere erste Zahl benötigen. - Zähler werden nicht vererbt. Der Wert der Eigenschaft wird nicht vererbt, aber der Zähler selbst ist für Nachkommen und nachfolgende Geschwister durch den Gültigkeitsbereich sichtbar — das ist es, was verschachtelte Nummerierung ermöglicht.
Browser-Unterstützung
counter-reset ist Teil von CSS2 und wird in allen modernen Browsern unterstützt, einschließlich Chrome, Firefox, Safari, Edge und Opera.