0
サブカウンターを示す項目をインクリメントするCSSカウンターを取得しようとしています。おそらく、HTMLがネストされていないため、リセットは期待通りに機能していないように見えます。なぜ誰かが私の理解を助けることができますか?ボディーセレクターのsub-item
カウンターをリセットすると、すべてのサブアイテムはアイテムと同様に扱われ、2回目のリセットは無視されます。CSSカウンターを使用してカウンターリセット付きサブセクションを作成する
CSSの定義:
body {
counter-reset: panel item;
font-family: monospace;
}
div.panel-heading:before {
counter-increment: panel;
content: "Panel " counter(panel, upper-roman) ". ";
}
div.panel-body div.item:before {
counter-increment: item;
content: "Item " counter(item) ". ";
counter-reset: sub-item;
}
div.panel-body div.sub-item:before {
counter-increment: sub-item;
content: "sub-item " counter(item) counter(sub-item, lower-alpha) ". ";
}
HTML本体:
<div class="panel">
<div class="panel-heading">
<- should be I </div>
<div class="panel-body">
<div class="item">
<- should be 1
</div>
<div class="sub-item">
<- should be 1a
</div>
<div class="sub-item">
<- should be 1b
</div>
<div class="sub-item">
<- should be 1c
</div>
<div class="item">
<- should be 2
</div>
<div class="sub-item">
<- should be 2a
</div>
<div class="sub-item">
<- should be 2b
</div>
</div>
</div>
<div class="panel">
<div class="panel-heading">
<- should be II </div>
<div class="panel-body">
<div class="item">
<- should be 3
</div>
<div class="sub-item">
<- should be 3a
</div>
<div class="item">
<- should be 4
</div>
<div class="sub-item">
<- should be 4a
</div>
<div class="sub-item">
<- should be 4b
</div>
<div class="sub-item">
<- should be 4c
</div>
</div>
</div>
はここで便宜上jsfiddleです。
ですはい、あなたの問題は、 'div.item下にリセットされ、サブ項目カウンタの確かだった:before'。 ':before'要素は' div.item'の子要素であるため、その値はその要素だけが知っています。次の 'div'(これは' .sub'です)はこのカウンタやその値の存在を知らないので(継承しません)、 'item'はすべてサブアイテムを作成しますそれ自身のカウンタであり、aに設定される。 'div.item'でカウンタをリセットすると、そのカウンタの値はすべての兄弟によって継承され、各' .sub-item'はb、cなどにインクリメントできます。 – Harry
詳細な説明は、この回答(http://stackoverflow.com/questions/31658111/how-do-i-stop-div-tags-interfering-with-counters/31660287#31660287)をご覧ください。ケースは少し違っているので私はそれが偽薬だとは思わないが、カウンタースコープと継承がどのように機能するかについてもっと理解するだろう。 – Harry