CSSの実習(5) - 要素への背景画像の指定。

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

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

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

前回の実習(4) - 枠線の指定では、各要素に枠線を付けてみました。

今度は、各要素の背景に画像を指定してみましょう。

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

要素への背景画像の指定で出来る事。

現時点では、CSSでは各要素に一枚までの背景画像を指定出来ます。

  • 現在の公式仕様である、CSS 第二水準第一改訂版では、背景画像は一要素につき最大一枚とされております。
  • 将来の仕様となる予定の CSS 第三水準では、背景画像を二枚以上用いる事も可能になる予定で、平成23年11月12日現在でも最新のブラウザでサポートがなされております。ただ、インターネットエクスプローラの場合 8.0 まででは対応しておりません。

これを活用する事で、よりスタイリッシュなウェブ文書を作成する事が可能になります。

また、インライン要素に装飾効果を与えるためにも利用出来ます。

例えば、日本語の文書では強調したい箇所に傍点を打つ習慣がありますが、現時点では CSS で傍点を打つためのプロパティは存在しません。

  • これもCSS 第三水準で導入される予定ですが、平成23年11月12日現在ではまだ普及していないようです。

このため、背景画像を用いて傍点っぽく見せると言うやり方が考えられます(今回やってみる事にも含まれております)。

  • 但し、インターネットエクスプローラ 7.0まででは折返しで複数行にまたがると背景画像が巧く適用されない不具合があります。
  • また、携帯電話などのモバイルブラウザにもインライン要素の背景画像が巧く利用出来ないものがあるようです。

背景に画像を指定する際に注意したい事。

背景に画像を指定する場合、以下の点に注意してください。

背景画像が表示されない場合を考えてください
背景画像が表示されなくても読めるようにしましょう
閲覧者の中には、都合で画像の読込みをしない設定にして閲覧しているかも知れません。

そのような場合には背景には画像が表示されず、背景色の無地となります。

その結果、前景色(文字の色)と背景色が近い場合には読みたくても読めないと言う事態になり兼ねません。

また、背景画像の読込みに時間が掛かり過ぎる場合、背景画像の読込みが完了するまではやはり背景色の無地のままとなります。

このような状況でやはり前景色と背景色が近くなっていて文字が読めない状況と言うのは、閲覧者にとっては相当ストレスを与えるものです。

この対策として、背景画像の有無に拘わらず適切な背景色を与えて、背景画像が表示されない場合の可読性を確保する必要があります。

背景画像が表示されなくても、意図が伝わるようにしましょう
日本語文書で強調されたフレーズに打たれる傍点は、現時点で CSS での実現は出来ません。

このため、背景画像で代用する事となりますが、背景画像が表示されないとその傍点が見えなくなるため、強調の意図が伝わらなくなる恐れがあります。

強調などのように適切に伝えたいものであれば、代わりの背景色を指定すると良いでしょう。

テキストが読み難くなる背景画像は避けましょう
背景画像に紛れてテキストが読めなくなっては困ります。

このため、以下の点に注意してください。

  • 前景色(文字の色)を適切なものにして、可読性を確保しましょう。
  • 背景画像も、色にムラのない適切なものを撰ぶようにしましょう。

以上述べた通り、背景画像を用いる場合には(勿論用いない場合でも)適切な前景色と背景色の指定は不可欠です。

今回やりたい事。

今回は、以下の事をしてみましょう。

  1. <h2>要素(第二等級見出し)について、右端に以下のような画像 Background-H2.GIF を背景に使います。
    • 右から左に、黄色から白に変化するグラデーションを持つGIF画像

    この画像は実は高さ 1ピクセルしかありませんが、縦方向に繰返し並べる事で要素の上パディング上端から下パディング下端までに及ぼされる事になります。

    尚、この画像は CSS スタイル定義ファイルと同じディレクトリ(フォルダ)に置かれているものと仮定します。

  2. <em>要素(強調)について、文字を黒にする代わりに、以下の画像 Background-EM.GIF を上端に横方向に並べる事で、強調の傍点っぽい表示を実現します。
    • 幅16ピクセルズ、高さ64ピクセルズで、真っ白な背景の上端の中央に黒点が打たれたGIF画像

    この画像はフォントの幅が16ピクセルズで無いとずれるのですが、現状では一文字ごとに背景を指定する方法は無いので、傍点っぽい表示と言う事になるのです。

    • ただ、この方法だと閲覧者が想定している文字サイズと異なったサイズで閲覧していると、傍点がずれてしまうと言う難点がありますので、あくまでも傍点っぽく見せると言う考えでやると良いでしょう。
      • 将来の仕様となる CSS 第三水準には、背景画像の大きさを調整するプロパティが導入されますが、これの対応はやはりインターネットエクスプローラ 8.0 までが非対応なので、ちょっと躊躇います。
      • 実は、一文字一文字に綺麗に傍点を打つ方法もありますが、その方法は初心者が学ぶべき範疇を超えているので、初心者の段階が終わったら挑戦してみると良いでしょう。

    この画像も、CSS スタイル定義ファイルと同じディレクトリ(フォルダ)に置かれているものと仮定します。

  3. その他の要素には背景画像は付けません。

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

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

実際のスタイル定義。

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

まず、基本スタイルでは背景画像を使いません。

CSSの仕様では背景画像のデフォルトはなしとなっておりますが、実際のウェブブラウザではそのようになっているかどうかは分かりません。

実際にブラウザのデフォルトスタイルで背景に画像を与えると言うのは聞いた事がありませんが、絶対無いとも断言出来ません。

  • 何故なら、HTMLの仕様でデフォルトスタイルで背景に画像を使うなとは書かれていないからです。

そこで、念のため、初めに決めた通りの基本スタイルとして背景画像を打消してやります。

スタイル定義ファイル style.css 内の全称セレクタに対するプロパティ定義に、以下のように追記する事で新たなプロパティを指定します。

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

ここで、

で、画像なしと言う値を与えております。

<h2>要素(第二等級見出し)への背景画像を。

続いて、<h2>要素(第二等級見出し)の背景画像を指定しましょう。

初めに決めた<h2>要素へのスタイルとして、右端に以下の画像 Background-H2.GIF を背景に用いる事とします。

  • 右から左に、黄色から白に変化するグラデーションを持つGIF画像

この画像は、CSS のスタイル定義ファイルと同じディレクトリ(フォルダ)に置かれているものとします。

そしてこの画像を上端から下端へ縦方向に並べる事で、要素全体に行き渡るようにします。

そこで、スタイル定義ファイル style.css 内の<h2>要素の要素セレクタに対するプロパティ定義に、以下のように追記する事で新たなプロパティを指定します。

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

ここで、

  1. background-image プロパティは背景画像を指定するプロパティで、CSSと同じディレクトリにある Background-H2.GIF を背景画像に指定したと言うものです。
  2. background-repeat プロパティは背景画像の繰返し方法プロパティで、縦方向のみ繰り返して並べると言う指定をしております。
  3. background-position プロパティは背景画像を指定するプロパティで、右端上端に画像を置くと言うものです。

尚、この背景画像はパディングすなわち枠線の内側の空間にも及びます。

<em>要素(強調)へ傍点代わりの背景画像を。

初めに決めた通り、<em>要素(強調)には文字を黒にして、また傍点代わりに以下の画像 Background-EM.GIF を上端に横方向に並べると言う事にします。

  • 幅16ピクセルズ、高さ64ピクセルズで、真っ白な背景の上端の中央に黒点が打たれたGIF画像

この画像も、CSS スタイル定義ファイルと同じディレクトリ(フォルダ)にあるものとします。

ここで注意しなければならないのは、以下の二つです。

背景画像が表示されない場合にはどうする?
閲覧者が画像表示を行わない設定にしている場合など、背景画像が表示されない場合には背景画像による視覚効果は期待出来ません。

そうなると、強調していると言う意図が伝わらなくなる恐れがあります。

このため、そのような状況でもせめて何らかの特別な語句である事は分かるよう、背景に薄い色を与えておく事にしましょう。

  • この背景色は、背景画像が掛かる領域では見えません。傍点に用いる画像のやたら下に余白があるのは、背景色の影響を打ち消せるようにするためです。
背景画像と要素の関係
テキストに背景画像を置いた場合、文字で画像が隠れてしまいます。

今回は文字の上の画像が来るようにしたいので、上方向にパディングを与える事とします。

そこで、スタイル定義ファイル style.css 内の<em>要素要素セレクタに対するプロパティ定義に、以下のように追記・変更する事で新たなプロパティを指定します。

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

ここでも<h2>要素に与えたプロパティと同様のプロパティが与えられておりますが、今度は、

  • 横方向に繰返し並べる
  • 左端上端に配置する

と言う値に変更されております。

また、

  1. background-color プロパティで背景画像が表示されない場合の背景色(ここでは薄桃色)
  2. padding-top プロパティで上方向の背景が及ぶ余白

も与えております。

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

以上のスタイルを纏めると、スタイル定義ファイル 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;
    }

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文書を表示させると以下のようになります。

前回までのスタイル定義の場合
<h2>要素の枠線の中は白無地になっており、<em>要素は赤文字で強調されております。
今回のスタイルを適用した場合
<h2>要素の枠線の中の右から左に掛けて、黄色から白へのグラデーションが掛かり、<em>要素の上には点が打たれる事で強調と分かるようになりました。

制作者の環境は少し大きめのフォントを設定しているので、見事に<em>要素の画像がずれておりますが、現状では仕方がありません。