このウェブサイトはご利用の端末での閲覧に対応していません。
This website does not support your device.

@counter-style”ルールCSS3で追加

記事Feb. 1st,2022
リスト・マーカーとして使用するカウンター・スタイルを定義する“@counter-style”ルール
この記事はCSS3に対応しています。
この記事はCSS3に対応しています。

@counter-style”ルール

@counter-style”ルールはリスト・アイテムリスト・カウンターの値をどのようにしてリスト・マーカーとして表現するかを定めたカウンター・スタイルを定義します。

カウンター・スタイルは“@counter-style”ルールの中に含まれるsystem”ディスクリプタsymbols”ディスクリプタもしくはadditive-symbols”ディスクリプタの組み合わせによってそのアルゴリズムが指定されます。

@counter-style”ルールによって定義されたカウンター・スタイルは“@counter-style”ルールが含まれる文書全体で使用可能になります。

@counter-style”ルールの構文

@counter-style”ルールは“@counter-style”に続く、カウンター・スタイルの名前(“<counter-style-name>”)と宣言リスト(<declaration-list>)を含む“{”と“}”で囲まれたブロックからなります。

@counter-style 〚カウンター・スタイルの名前〛 {
〚宣言リスト〛
}

<counter-style-name>”は“none”と一致しない<custom-ident>として定義します。なお、decimaldiscsquarecircledisclosure-opendisclosure-closedのキーワードは有効な“<counter-style-name>”ですが、“@counter-style”ルールでカウンター・スタイルの名前を付ける時には使用することはできず、使用した場合は“@counter-style”ルールは無効となります。

<counter-style-name>”は大文字と小文字が区別されますが、仕様書にあるカウンター・スタイルの名前はパース時には小文字に揃えられます。

同じ“<counter-style-name>”で定義された“@counter-style”ルールが複数あって競合する場合は通常のカスケードの規則に則って1個だけ“@counter-style”ルールが選択されます。“@counter-style”ルールが競合した場合、カスケードによって選ばれた“@counter-style”ルールの設定のみが使用され、他の“@counter-style”ルールの設定は使用される“@counter-style”ルールに含まれない設定も含めて完全に上書きされます。

カウンター・スタイルは“@counter-style”ルールの中に含まれるディスクリプタによって定義されます。

@counter-style”ルールはそれぞれ明示されているか否かに関係なくすべてのディスクリプタの値を指定します。明示的に値が指定されていないディスクリプタの値には仕様書で定義されているディスクリプタの初期値が設定されます。“@counter-style”ルールの中に同じディスクリプタが複数含まれている場合は一番最後に記述されているものの値が使用され、それよりも前に記述されているものの値は無視されます。

ディスクリプタは“@counter-style”ルールの中でだけ意味を持ち、文書の要素には適用されません。また、ディスクリプタがどの要素に適用され得るのかや子要素へ継承されるのか否かについての決まりはありません。

不明なディスクリプタや文法上の誤りがあるディスクリプタは無視されますが、それによって“@counter-style”ルール自体が無効になることはありません。また、“@counter-style”ルールはCSSの前方互換性の要件を満たすため、“@counter-style”ルールを認識できないユーザー・エージェントはエラーを出さずに“@counter-style”ルールを無視します。

@counter-style”ルールのディスクリプタ

ディスクリプタ
ディスクリプタ 説明 説明
system カウンター・スタイルが使用するアルゴリズム cyclic 与えられた記号を周期的な記号として解釈してリスト・マーカーを表現します
symbolic 与えられた記号をリスト・マーカーを表現します
alphabetic 与えられた記号を全単射的記数法の桁として解釈してリスト・マーカーを表現します
numeric 与えられた記号を位取り記数法の桁として解釈してリスト・マーカーを表現します
additive 与えられた記号を加算的記数法の桁として解釈してリスト・マーカーを表現します
fixed <integer> 与えられた記号を有限の記号として解釈してリスト・マーカーを表現します
extends <counter-style-name> 他のカウンター・スタイルの設定を拡張します
negative リスト・マーカーにマイナス記号として追加する文字 <symbol> 指定された<symbol>”値をマイナス記号としてリスト・マーカーに追加します
prefix リスト・マーカーの後に追加する文字 <symbol> 指定された<symbol>”値リスト・マーカーの前に追加します
suffix リスト・マーカーの後に追加する文字 <symbol> 指定された<symbol>”値リスト・マーカーの後に追加します
range カウンター・スタイルが定義される値の範囲 auto cyclicnumericfixedの場合】範囲は負の無限大から正の無限大です
alphabeticsymbolicの場合】範囲は“1”から正の無限大です
additiveの場合】範囲は“0”から正の無限大です
extendsの場合】拡張元のカウンター・スタイルで“range: auto;”とした場合と同じ範囲
<integer> カウンター・スタイルが定義しているリスト・カウンターの上限/下限を指定する
infinite カウンター・スタイルが定義しているリスト・カウンターの上限/下限は正/負の無限大
pad リスト・マーカーが達するべき桁数と不足する桁を埋める文字 <integer> <symbol> リスト・マーカーが達するべき桁数と不足する桁を埋める文字を指定します
fallback 代替のカウンター・スタイル <counter-style-name> 指定された<counter-style-name>”値で定義されたカウンター・スタイルを代替のカウンター・スタイルとします
symbols リスト・マーカーを生成するために使用する記号 <symbol> 指定された<symbol>”値を使用してリスト・マーカーを生成します
additive-symbols <integer> <symbol> 指定された<symbol>”値と位の量を使用してリスト・マーカーを生成します
speak-as リスト・マーカーの読み上げ方 auto alphabeticの場合】“spell-out”と同じ
cyclicの場合】“bullets”と同じ
extendsの場合】拡張元のカウンター・スタイルで“speak-as: auto;”とした場合と同じ範囲
【上記以外の場合】“numbers”と同じ
bullets ユーザー・エージェントが順不同リストのアイテムを読み上げる時の既定の言い回しを使用します
numbers リスト・カウンターの値である数値をコンテント言語で読み上げます
words 通常通りカウンター表現を生成してそれをコンテント言語で読み上げます
spell-out 通常通りカウンター表現を生成してそれをコンテント言語で一文字ずつ読み上げます
<counter-style-name> 指定されたカウンター・スタイルリスト・カウンターの値を読み上げます

additive-symbols”ディスクリプタsystem”ディスクリプタの値がadditiveの場合に使用し、それ以外の場合はsymbols”ディスクリプタを使用します。ただし、system”ディスクリプタの値がextendsの場合はsymbols”ディスクリプタadditive-symbols”ディスクリプタは使用できません。

<symbol>”値

<symbol>”値はsymbols”ディスクリプタadditive-symbols”ディスクリプタなどでリスト・マーカーを表現するために使用される記号(文字)を指定するために使用されます。

<symbol>”値は以下の3種類の構文で指定することができます。

説明
<string> <string>”値として有効な文字列でリスト・マーカー用の記号を指定
<image> url()”関数を使用した画像ファイルなどでリスト・マーカー用の記号を指定
<custom-ident> <custom-ident>”値として有効な識別子でリスト・マーカー用の記号を指定

<string>”値<custom-ident>”値で指定される文字は1文字である必要はなく、1個の“<symbol>”値を複数の文字で構成することもできます。

特殊な記号や絵文字などあらゆる文字が“<symbol>”値として使用可能ですが、文書を表示するのに使用可能なフォントにその文字が含まれていない場合にはリスト・マーカーが正しく表示されないので注意が必要です。

使用例

ol { list-style-type: sample-counter;}

@counter-style sample-counter {
system: cyclic;
symbols: "\1F400" "\1F402" "\1F405" "\1F407" "\1F409" "\1F40D" "\1F40E" "\1F40F" "\1F412" "\1F413" "\1F415" "\1F417";
suffix: "\003A\0020";
speak-as: numbers;
}
<ol>
<li>東京スカイツリー</li>
<li>対馬オメガ局送信用鉄塔</li>
<li>硫黄島ロランC主局(初代)</li>
<li>硫黄島ロランC主局(2代)</li>
<li>南鳥島ロランC局(初代)</li>
<li>東京タワー</li>
<li>NHK川口送信局</li>
<li>あべのハルカス</li>
<li>明石海峡大橋</li>
<li>横浜ランドマークタワー</li>
<li>虎ノ門ヒルズ森タワー</li>
<li>りんくうゲートタワービル</li>
<li>大阪府咲洲庁舎</li>
<li>おおたかどや山標準電波送信所</li>
<li>依佐美送信所</li>
</ol>
  1. 東京スカイツリー
  2. 対馬オメガ局送信用鉄塔
  3. 硫黄島ロランC主局(初代)
  4. 硫黄島ロランC主局(2代)
  5. 南鳥島ロランC局(初代)
  6. 東京タワー
  7. NHK川口送信局
  8. あべのハルカス
  9. 明石海峡大橋
  10. 横浜ランドマークタワー
  11. 虎ノ門ヒルズ森タワー
  12. りんくうゲートタワービル
  13. 大阪府咲洲庁舎
  14. おおたかどや山標準電波送信所
  15. 依佐美送信所

仕様書

定義されている仕様書
Level 1 Level 2 Level 3
勧告(REC) 勧告(REC) 勧告候補(CR)
@counter-style
定義なし

定義なし

定義あり
一番上へ
トップにもどる
シェアする
シェアする
Facebookでシェアする
ツイート
Google+でシェア
Pocket
はてなブックマーク