CSSでカウンターの設置

概要:リストや表、箇条書き等で行の入れ替えや出入りが多い場合、連続番号を訂正しなくても、自動的に連番を設定するCSSカウンタの事例です。

事例1:Pタグで羅列した箇条書きタイプ

女子プロゴルフ  賞金ランキングベスト5
 2019年ー月ー日現在

鈴木愛 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>申ジエ&nbsp; 14,227万円 出身地:韓国・全羅道  生年:1988年</p>
<p>ペ・ソンウ&nbsp; 12,755万円 出身地:韓国・ソウル市  生年:1994年</p>
<p>イン・ミニョン&nbsp; 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>&nbsp;</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;}
CSS補足説明
ブラウザは、FireFoxまたはEideをご利用ください。Googleは、行番号とCSSのラインが一致しません。
 
基本レイアウトは、以下のような設定です。

*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%;}