CSS

The list-style property is a shorthand that lets you specify a list item’s marker shape, position, and image all at once.

list-style

はじめに

list-style 系のプロパティは、箇条書きに表示されるマーカー(丸・番号など)を思い通りにカスタマイズするための設定項目です。マーカーの形や色、配置位置、さらに画像を使った装飾までまとめてコントロールできるため、シンプルなリストはもちろん、ナビゲーションメニューのデザインやチェックリスト、多言語対応のユーザーインターフェイスなど、さまざまな場面で活躍します。

HTML で箇条書きを作るときは、まず <ul>(順序なしリスト)や <ol>(順序付きリスト)と、そこに含まれる <li>(リストアイテム)要素を用います。このときブラウザは、<ul> に対しては黒丸(disc)・白丸(circle)・四角(square)などのマーカーを、<ol> に対しては 1, 2, 3… といった数字や a, b, c… の英字、Ⅰ, Ⅱ, Ⅲ… のローマ数字などを、自動でマーカーとして表示してくれます。

ただし、この標準のマーカーだけではデザインの幅が限られるため、より柔軟で個性的な見た目を実現したい場合には、CSS の list-style 関連プロパティを使ってカスタマイズする必要があります。

関連プロパティとショートハンド

プロパティ 役割 初期値
list-style-type マーカーの形状・番号体系 disc
list-style-position マーカーを行内に含めるか(inside)外側に出すか(outside) outside
list-style-image 画像マーカー(url()) none
list-style 上記 3 つのショートハンド なし

ショートハンド順序は自由ですが、慣例的に「type → position → image」の並びが読みやすいです。未指定のサブプロパティは初期値に戻ります。

CSS

/* ショートハンド例 */
ul.warning {
	list-style: square inside url(warning.svg);
}

複数の値を同時に指定しない場合は、省略も可能です。例えば、

CSS

ul.warning {
	list-style: square inside;
}

のように、list-style-typelist-style-positionだけを指定したり、

CSS

ol.warning {
		list-style: inside url(warning.svg);
}

のように、list-style-positionlist-style-imageだけを指定したりすることもできます。

ショートハンドを使わずに個別に指定する場合は、

CSS

ul.warning {
	list-style-type: square;
	list-style-position: inside;
	list-style-image: url(warning.svg);
}

といった形になります。

list-style-type ― マーカー形状・番号体系

リストのマーカーとなる記号や数字の形式を指定するプロパティです。主な値は次のようなものがあります。

代表的なキーワード

順序なしリスト(<ul>)で使える主な値
順序付きリスト(<ol>)で使える主な値

下記の例では、リストアイテムが「I」「II」「III」という形式になります。

CSS

ol.custom-roman {
	list-style-type: upper-roman;
}

HTML

<ol class="custom-roman">
	<li>item1</li>
	<li>item2</li>
	<li>item3</li>
</ol>
  1. item1
  2. item2
  3. item3

HTML5/CSS3以降では、独自のカウンタースタイル(@counter-style)を使うことも可能です。これは高度な話題なので後ほど触れます。

国際化番号体系

list-style-type は 40 以上の多言語体系を標準で持ちます。

例)japanese-formalkannadaarmeniangeorgian など。

  1. item1
  2. item2
  3. item3

CSS

ol.ja {
	list-style-type: japanese-formal; /* 壱, 弐, 参… */
}

HTML

<ol class="ja">
	<li>item1</li>
	<li>item2</li>
	<li>item3</li>
</ol>

list-style-position ― マーカー配置

マーカーがテキストの「外側に表示されるか」、あるいは「内側に表示されるか」を指定します。指定できる値は以下の2つです。

outside

デフォルト設定では、リストのマーカーはリスト項目のボックスの外側にある 左側の余白(マージン領域) に表示されます。

この配置により、マーカーは左マージン内に収まり、その右側に続く テキストの行頭がきれいにそろう 形になります。

これが、私たちがふだん目にする 標準的な箇条書きのレイアウト です。

CSS

.outside-example {
	list-style: square outside;
}

HTML

<ul class="outside-example">
	<li>item1-1<br>item1-2</li>
	<li>item2</li>
</ul>

inside

inside を指定すると、リストの マーカー(●や番号など)がリストアイテムのテキスト領域に含まれて表示 されます。

つまり マーカーと本文が同じインデント幅の中に収まり、2 行目以降がある場合は テキストがマーカーの真下から折り返される ため、outside とは違った段落の見え方になります。

このレイアウトは、チェックリストのチェックボックス風デザイン や、段落番号を本文内に食い込ませたいとき によく使われます。

CSS

.inside-example {
	list-style: square inside;
}

HTML

<ul class="inside-example">
	<li>item1-1<br>item1-2</li>
	<li>item2</li>
</ul>

list-style-image ― 画像マーカー

リストアイテムの先頭に画像を使いたい場合に指定するプロパティです。通常のマーカーの代わりに独自の画像を表示できます。

CSS

.custom-image {
	list-style-image: url(icon.svg);
}

もし画像を表示させたくない場合は、

CSS

list-style-image: none;

を指定します。ただし、画像が大きすぎる場合、マーカーとして綺麗に表示されない可能性があるため、適切にサイズを調整したアイコンを使うことが望ましいです。また、表示位置はlist-style-positionの影響も受けます。

高解像度対応
2x PNG や vector(SVG) を推奨。
フォールバック
画像が読めない場合、UA は list-style-type を参照。
Data URI
依存ファイルを減らしたい場合に便利。ただし可読性は犠牲。

::marker 擬似要素との比較

::marker はリスト項目のマーカー専用に用意された擬似要素で、CSS Lists Level 3 の一部として主要ブラウザで安定実装が進んでいます。これを使うと、通常のインライン要素と同じ感覚でマーカーに colorfont-familyfont-size などのスタイルを直接指定できます。さらに list-style-* プロパティと併用でき、同じプロパティを両方に書いた場合は 後から記述したほうが優先される 仕組みです。

  1. item1-1
    item1-2
  2. item2
  3. item3

CSS

.custom-marker li::marker {
	content: '👉';
	font-size: 1.2em;
}

HTML

<ol class="custom-marker">
	<li>item1-1<br>item1-2</li>
	<li>item2</li>
	<li>item3</li>
</ol>

カウンタースタイル(@counter-style)での高度なカスタマイズ

CSSの@counter-style規則を使うと、独自の番号付けルールを定義できます。たとえば、和文数字「壱」「弐」「参」や、特定の文字列パターンなど、標準のlist-style-typeにない形式を作れます。ブラウザのサポートや利用場面が限られますが、カスタムリストの表現にこだわりたい場合に非常に強力です。

  1. はじめに
  2. カウンタースタイルの概要
  3. 実装例
  4. ブラウザサポート
  5. まとめ

HTML

<ol class="japanese">
	<li>はじめに</li>
	<li>カウンタースタイルの概要</li>
	<li>実装例</li>
	<li>ブラウザサポート</li>
	<li>まとめ</li>
</ol>

CSS

@counter-style custom-japanese {
	system: fixed;
	symbols: "壱" "弐" "参" "四" "五";
	suffix: "、";
}

ol.japanese {
	list-style: custom-japanese;
}

上記のように定義したのち、list-style: custom-japanese;を指定すると、1番目に「壱」、2番目に「弐」...というようなマーカーで表示されます。
(実際の環境で正しく動くかはブラウザのサポート状況に依存するため、動作テストが必要です。)

ブラウザ互換性と注意点

まとめ

list-style関連プロパティは一見単純そうに見えますが、デザインやユーザビリティ、アクセシビリティなど多方面に影響があります。初心者の方はまずはlist-style-typelist-style-positionで基本的な見た目の調整を覚え、中級以上の方は疑似要素や@counter-styleなども取り入れることで、表現力を高めてみてください。

より柔軟なデザインを実現する際は、マーカーを消してから独自のアイコンやSVGを挿入する方法なども考えられます。使い方次第で、単なる箇条書きが読みやすく個性的なレイアウトへと変わります。