CSSでカウンターの設置
概要:リストや表、箇条書き等で行の入れ替えや出入りが多い場合、連続番号を訂正しなくても、自動的に連番を設定するCSSカウンタの事例です。
事例1:Pタグで羅列した箇条書きタイプ
鈴木愛 16,019万円 出身地:徳島県三好郡 生年:1994年
澁野日向子 15,261万円 出身地:岡山県岡山市 生年:1998年
申ジエ 14,227万円 出身地:韓国・全羅道 生年:1988年
ペ・ソンウ 12,755万円 出身地:韓国・ソウル市 生年:1994年
イン・ミニョン 10,576万円 出身地:韓国 生年:1992年
HTML
<div class="kn_p_order" style="width: 100%;">
<div>女子プロゴルフ 賞金ランキングベスト5</div>
<div> 2019年ー月ー日現在</div>
<p>鈴木愛 16,019万円 出身地:徳島県三好郡 生年:1994年</p>
<p>澁野日向子 15,261万円 出身地:岡山県岡山市 生年:1998年</p>
<p>申ジエ 14,227万円 出身地:韓国・全羅道 生年:1988年</p>
<p>ペ・ソンウ 12,755万円 出身地:韓国・ソウル市 生年:1994年</p>
<p>イン・ミニョン 10,576万円 出身地:韓国 生年:1992年</p>
</div>
CSS
.kn_p_order > div{ /* カウンタ設置 */
counter-reset:ctr 0; /* 名前付、初期値 */
font-weight:bold;
text-align:center;
}
.kn_p_order p:nth-of-type(n+1){ /* pの最初から最後迄 */
counter-increment:ctr; /* カウンタに+1 */
}
.kn_p_order
p:nth-of-type(n+1)::before{ /* pの最初から最後迄 */
content:"第"counter(ctr)"位 "; /* カウンタ値表示 */
margin-right:1em;
}
事例2:tableタグで作成した表タイプ
表の列数と列幅に自由に対応できる汎用型テーブルの事例です。
****** 以下が表示の事例 ******
女子プロゴルフ 賞金ランキングベスト5 2019年ー月ー日現在
順位 | 名前 | 賞金 | 出身地 | 生年 |
鈴木愛 | 16,019万円 | 徳島県三好郡 | 1994年 | |
澁野日向子 | 15,261万円 | 岡山県岡山市 | 1998年 | |
申ジエ | 14,227万円 | 韓国・全羅道 | 1988年 | |
ペ・ソンウ | 12,755万円 | 韓国・ソウル市 | 1994年 | |
イン・ミニョン | 10,576万円 | 韓国 | 1992年 |
HTML
<table class="kn_tbl_order kn_tbl_col">
<tbody>
<tr>
<td>順位</td><td>名前</td><td>賞金</td><td>出身地</td><td>生年</td>
</tr>
<tr>
<td> </td><td>鈴木愛</td><td>16,019万円</td><td>徳島県三好郡</td><td>1994年</td>
</tr>
<!-- 以下、省略 -->
</tbody>
</table>
CSS
/* 基本レイアウト 変更不要 */
.kn_tbl_order {
border-collapse: collapse;
table-layout:fixed;
width:100%;}
.kn_tbl_order
tr,td{border:1px solid #000;}
.kn_tbl_order
tr:first-of-type td:nth-of-type(n+1){
font-weight:bold;
text-align:center;}
.kn_tbl_order
tr td:nth-of-type(n+2){
padding-left:5px;}
.kn_tbl_order tr:nth-of-type(n+2)
td:first-of-type {
text-align:center;}
/* 基本レイアウト 終了 */
/* カウンタ */
.kn_tbl_order{counter-reset: ctr 0;}
.kn_tbl_order tr:nth-of-type(n+2){
counter-increment: ctr;}
.kn_tbl_order tr:nth-of-type(n+2)
td:first-of-type::before{
content:"第 "counter(ctr)" 位";
/* 以降はカウンタ表示の修飾 */
font-size:1.05em;}
/* ----- 列幅の設定 ----- */
.kn_tbl_col tr td:first-of-type{
width:15%;}
.kn_tbl_col tr td:nth-of-type(2){
width:20%;}
.kn_tbl_coltr td:nth-of-type(3){
width:25%;}
.kn_tbl_col tr td:nth-of-type(4){
width:25%;}
.kn_tbl_col tr td:nth-of-type(5){
width:15%;}
/* ----- 特定列への表示設定 ----- */
.kn_tbl_col tr td:nth-of-type(n+3){
text-align:center;}
*1行目にthを設定していないので、最初の行(n+1)を列タイトルに設定(7行目)
*カウンタ値の表示は、左端1列目
*2列目以降の列の先頭に5px のスペース
5行目・NC3では、tableタグに罫線が表示されない為、罫線を指定
7行目・1行目をthに設定していないので、1行目の全列をタイトルに設定 → 太字と中央揃え
11行目・各行の2列目から最後の列まで、列先頭に半角スペース
14行目・2行目から最後の行まで、1列目(カウンタ値)を中央配置
19行目・カウンタ設置、ctrは任意名、0は初期値でデフォルト0なので、記述しなくて良い
20行目・2行目から最後迄ctrに+1、加算値はデフォルト1。(1行目は列タイトル)
22行目・2行目から最後迄の1列目にカウンタ値を表示。カウンタ値の前後に引用符で囲むと文字などを表示できる。24行目以降にCSSで「プロパティ」・「値」を設定できる。
28-37行目・テーブルの2つ目のクラス指定で、列毎に列幅を設定。事例では5列で個別設定が、同じ幅などまとめて記述可→次項に記述。
39行目・全行3列目以降、中央揃え
複数のテーブルを作成する場合
1.表作成:tableタグに2個のクラスを指定し、2つ目のクラス名(事例では、kn_tbl_col)を作成。
2.CSS作成:2つ目のクラスで列数と列幅を記述。
列数と列幅の設定事例 列数 × 列幅 = 100以下に
/* ---------全5列 均等幅 --------- */
.kn_tbl_col tr td:nth-of-type(n+1){width:20%;}
/* ---------全5列 1列目だけ異なり、2列目以降が均一幅 --------- */
.kn_tbl_col tr td:first-of-type{width:10%;}
.kn_tbl_col tr td:nth-of-type(n+2){width:22.5%;}