番号付きリストをCSSとcounter()関数でデザインする
番号付きリストをCSSとcounter()関数でデザインしてみます。
HTMLは次の通りです。
<ol>
<li>ピリオドつき
<ol>
<li>括弧つき
<ol>
<li>丸数字</li>
<li>丸数字</li>
</ol>
</li>
<li>括弧つき
<ol>
<li>丸数字</li>
</ol>
</li>
</ol>
</li>
<li>ピリオドつき
<ol>
<li>丸数字</li>
<li>丸数字</li>
<li>丸数字</li>
</ol>
</li>
</ol>
実際の表示は次の通りです。
- ピリオドつき
- 括弧つき
- 丸数字
- 丸数字
- 括弧つき
- 丸数字
- 括弧つき
- ピリオドつき
- 丸数字
- 丸数字
- 丸数字
まずは最初の番号付きリストはピリオドつきにします。
numberというカウンターを作成しますが、
- counter-reset: number;で一旦カウンターをゼロにします
- counter-increment: number;でカウンターの値を増加します
- content: counter(number);でカウンターを表示させます
という作業を繰り返します。
デザインは、インデントされるごとに
- ピリオドつき
- 括弧つき
- 丸数字
と変えています。
スタイルシートは次の通りです。
li要素に position: absolute;を指定しているのは、番号付きリストでテキストインデントさせるためです。
.asset-content ol {
counter-reset: number;
}
.asset-content ol li {
position: relative;
list-style: none;
}
.asset-content ol li:before {
counter-increment: number;
content: counter(number)". ";
color: #94cc3d;
position: absolute;
top: 0;
left: -1.5em;
width: 3em;
height: 1em;
}
次にインデントされた番号付きリストは括弧つきにします。
.asset-content ol li ol {
counter-reset: number;
}
.asset-content ol li ol li {
position: relative;
list-style: none;
}
.asset-content ol li ol li:before {
counter-increment: number;
content: "("counter(number)")";
color: #555;
position: absolute;
top: 0;
left: -2em;
width: 4em;
height: 1em;
}
さらにインデントされた番号付きリストは丸数字にします。
.asset-content ol li ol li ol {
counter-reset: number;
}
.asset-content ol li ol li ol li {
position: relative;
list-style: none;
}
.asset-content ol li ol li ol li:before {
counter-increment: number;
content: counter(number);
font-size: 0.83em;
background: #fff;
color: #222;
position: absolute;
top: 0.3em;
left: -2em;
width: 1.4em;
height: 1.4em;
border: 1px solid #888;
border-radius: 50%;
text-align: center;
}
コメント