Hallo alle,
ausgehend von Nixens Counterei habe ich nochmal versucht, das Wiki zu verbessern, und kratze mich am Kopf. Es ist natürlich wieder mal ein Edge Case, aber trotzdem...
Dieses Beispiel:
<ul>
<li id="A">tricorder</li>
<li id="B">flux coupler <span>(or coil-spanner?)</span></li>
<li id="C">self-sealing stem bolt</li>
</ul>
mit diesem CSS
ul { counter-reset: FOO 17; }
li { counter-increment: FOO; }
#B span { counter-reset: FOO 88; }
li::after { content: " - " counters(FOO, '/'); }
span::after { content: " - " counters(FOO, '*'); }
(-> Fiddle)
Gemäß Spec sollte der in #B span erzeugte FOO Counter den FOO-Counter aus dem ul-Element überlagern. D.h. eine counters()-Ausgabe innerhalb dieses span-Elements darf zwei Werte zeigen. Außerhalb dieses Span hingegen…
Ebenfalls gemäß Spec sollte ein nachfolgendes Geschwisterelement dieses span den FOO-Counter des Elternelements erben. Counter aus dem vorhergehenden Geschwisterelement sollten nur dann geerbt werden, wenn es keinen gleichnamigen Zähler im Elternelement gibt (Inheriting Counters).
Das li::after Element im Listenelement #B sollte demnach den FOO Counter aus dem span nicht übernehmen und nur "19" anzeigen. Chrome und Firefox geben mir aber "19/88" aus, d.h. das im span erzeugte FOO wird an seine Geschwisterelemente weitervererbt.
Das gezeigte Verhalten entspricht der Aussage im vorherigen Spec-Abschnitt (Nested Counters and Scope): Ein Counter gilt für seine Kind-Elemente und seine nachfolgenden Geschwisterelemente.
Aber nach meinem Verständnis widerspricht es den formalen Vererbungsregeln der Spec, wie sie in Inheriting Counters aufgeschrieben sind.
Ist die Spec da widersprüchlich oder verstehe ich sie nur nicht?
Rolf
sumpsi - posui - obstruxi