CSSの実習(6) - リスト要素関連の指定。

お詫び(平成23年11月12日)
本コンテンツでサンプルとしている HTML 文書に以下のマークアップ漏れがありました。

平成23年11月10日以降に本コンテンツをご利用の方は、訂正した HTML 文書を御覧ください。

ご迷惑をお掛け致しました事を深くお詫び申し上げます。

前回の実習(5) - 要素への背景画像の指定では、各要素の背景に画像を用いる事で、幾つかの視覚効果を与えてみました。

今度は、リスト関連のスタイルの指定をしてみましょう。

リスト関連のプロパティはリスト関連の主なプロパティに纏めておきましたので、そちらも適宜参照してください。

リスト要素関連のスタイル指定で出来る事。

では、その直下にある<li>要素(リスト項目)の冒頭にマーカと呼ばれる目印を与えます。

多くの場合、

  • <ul>要素直下の<li>要素には黒丸や白丸など
  • <ol>要素直下の<li>要素には数字

がマーカとして付けられます。

これを好みのものに変えたり、邪魔であれば非表示にしたり、或いは好きな画像に代える事も出来ます。

  • リスト項目へのマーカを画像に代える場合、画像が読み込めない或いは読み込まない場合のために代替となるマーカの指定が必要です。

例えば、従来の HTML 4/XHTML 1 では、見出しや段落に含まれない<img>要素(埋め込み画像)は取敢えずリストとしてマークアップすると言う考えがありましたが、その場合リストのマーカが無意味に付いてしまいます。

そこで、CSSで画像リストのマーカを消してしまう事が考えられます。

  • HTML 5 では<figure>要素に収めることが可能になったため、この問題は過去のものとなります。

この他、リストのマーカの配置を変える事も出来ます。具体的には

  • マーカをリスト項目の外に出す
  • マーカをリスト項目の中に組み込む

から撰べます。

今回やりたい事。

今回は、文書中に含まれる<ul>要素(順不同リスト)に対して、以下の事をしてみましょう。

ここでは、実習としてやりたい事を挙げておりますが、もし読者の方がここで挙げているスタイルではなく、別のスタイルにしてみたいと思うのであれば、それを実際にやってみるのが何よりの実習です。

是非挑戦してみてください

実際のスタイル定義。

さて、これから実際に前回までのスタイル定義ファイル style.css にスタイルを追記していきましょう。

一般の<ul>要素(順不同リスト)の各項目へのマーカ。

今まででしたら、先ず基本となるスタイルを設定するのですが、リスト関連のスタイルは、リスト以外には全く意味が無いので、基本的なスタイルの指定は省略する事とします。

今回は、文書中にある<ul>要素(順不同リスト)について、以下の画像を<li>要素(リスト項目)のマーカとして使います。

  • 縦横16ピクセルズのGIF画像で、右向きの緑の三角矢印の画像。

これには、スタイル定義ファイル style.css 内の<ul>要素の要素セレクタに以下のプロパティを追記する事で可能になります。

ul {
    margin: 1em 0 0 4em;
    list-style-image: url("ListMarker.GIF");
    list-style-type: disc;
    list-style-position: outside;
    }

ここで、

  1. list-style-image プロパティはリスト項目へのマーカに用いる画像を指定するプロパティで、CSSと同じディレクトリにある ListMarker.GIF をマーカの画像に指定したと言うものです。
  2. list-style-type プロパティはリストへのマーカのタイプを指定するものです。画像を指定している場合でも、画像が読めない場合に代替として用いられるマーカとなりますので、必ず指定しましょう
  3. list-style-position プロパティはマーカをリスト項目の内部か外部のどちらに配置するかを指定します。今回は外部に配置したいので、outside 値を指定しております。

<li>要素(リスト項目)ではなく、<ul>要素にリストのスタイルを与えた理由。

ところで、本来リスト関連のプロパティは直接<li>要素(リスト項目)に与えるべきものです。

しかし、今回は<li>要素ではなく<ul>要素(順不同リスト)にスタイルを与えております。

リスト関連のプロパティは全て上位要素から継承される決まりですので、この記述でも問題はありません。

今回、敢えて<li>要素ではなく<ul>要素にリスト関連のスタイルを与えたのは、<li>要素に直接与えてしまうと、<ol>要素(順序付きリスト)があった場合にそのリストの項目のマーカまで画像に変えられてしまう事になってしまうからです。

  • 今回のサンプル HTML 文書には<ol>要素はありませんが、一般の場合には<ol>要素が用いられていない文書であっても、将来<ol>要素が追加される可能性は否定出来ません。

この問題を回避するには、上位要素となるリスト本体に対してスタイルを当てるのが一番確実となるのです。

もう一つ知っておいて欲しい事:<ol>要素のマーカ。

今回のサンプル HTML 文書には<ol>要素(順序付きリスト)はありませんが、list-style-type プロパティの公式のデフォルト値は disc (塗りつぶした黒丸)と定められております。

多くのブラウザでは<ol>要素直下の<li>要素(リスト項目)に対してはこの仕様に拘らず、デフォルトのマーカとして数字が表示されますが、仕様を考えると数字ではなく黒丸が表示されても文句は言えません。

このため、<ol>要素を用いる場合は、常に数字が正しく表示されるよう、以下のように<ol>要素にスタイル指定をするようにしてください

ol {
    list-style: decimal;}

ここまででのスタイル定義ファイルの纏め。

以上のスタイルを纏めると、スタイル定義ファイル style.css は以下のようになっているでしょう。

@charset "shift_jis";

* {
    background-color: transparent;
    background-image: none;
    color: #000;
    margin: 0;
    padding: 0;
    border: none 0;
    background-color: #fff;
    color: #000;
    font-family: "MS Pゴシック", sans-serif;
    font-size: 100%;
    font-style: normal;
    text-decoration: none;
    font-weight: normal;
    text-align: left;
    line-height: 1.5em;
    text-indent: 0;
    }

html {
    background-color: #fff;
    padding: 2em 1em;
    }

h1 {
    margin-bottom: 1em;
    background-color: #ff0;
    color: #090;
    font-style: italic;
    font-weight: bold;
    font-size: 200%;
    line-height: 1.2em;
    text-align: center;
    }

h2 {
    margin: 3em 0 1em;
    border-color: #cc0;
    border-style: solid;
    border-width: 1px 2px 4px;
    background-color: #fff;
    background-image: url("Background-H2.GIF");
    background-repeat: repeat-y;
    background-position: right top;
    color: #090;
    font-size: 120%;
    line-height: 1.2em;
    }

p {
    margin: 1em 0 0 2em;
    text-indent: 1em;
    }

ul {
    margin: 1em 0 0 4em;
    list-style-image: url("ListMarker.GIF");
    list-style-type: disc;
    list-style-position: outside;
    }

figure {
    margin: 1em 0 0 2em;
    }

hr {
    margin: 3em 0 1em;
    border: 1px solid #888;
    }

a:link {
    color: #090;
    text-decoration: underline;
    }

a:visited {
    color: #000;
    text-decoration: underline;
    }

dfn {
    border-bottom: 2px solid #cc0;
    color: #090;
    }

em {
    padding-top: 4px;
    background-color: #fee;
    background-image: url("Background-EM.GIF");
    background-repeat: repeat-x;
    background-position: left top;
    color: #000;
    }

このスタイル定義ファイルを適用したHTML文書を表示させると以下のようになります。

前回までのスタイル定義の場合
リストの各項目の前には、デフォルトスタイルの黒丸が打たれております。
今回のスタイルを適用した場合
リストの各項目の前には、指定した画像がマーカとして使われております。