7.5 スタイルシート

HTMLの基本的な要素によって様々な表現ができるようになりました.しかし文書の構造が表現できるだけではまだ物足りないですね.みなさんの中には文字に色をつけたいとか,幅や高さを指定したいと思った人もいるでしょう.

HTML はもともと学術的な情報交換のために開発されました.従って読む人がどんなコンピュータを使っていようと,その環境に左右されることなく内容を正しく伝えることが重要であり,文書の見栄えはあまり気にしていませんでした.しかし,世の中の多くの人がウェブを使うようになると,文章だけではつまらないので,文書のデザインを気にする人たちも現れました.そこで,HTML の限られた機能を使って美しくページをデザインするために次のような工夫が考え出されました.

ところが,このような工夫はページを複雑にして処理を遅くするだけでなく,ブラウザの種類や設定によって意味不明の表示になったり,テキスト読み上げソフトを使っている視覚障害者を困らせたりすることになります.

さらにデザインを意識するあまり,HTMLによって意味のまとまり毎に規定していた文章の論理構造が崩れてしまい,その結果,外見は綺麗だけど内容が伝わりにくいページが増えてしまいました.

スタイルシート(style sheet)は上のような問題を解決するための,ページのデザインを指定する仕組みです.HTML は文章の論理的な構造を表すマークアップを担当し,色や文字の大きさといったデザインに関するマークアップはスタイルシート言語で書きます.スタイルシート言語にはいくつかありますが,普通は CSS(Cascading Style Sheets)を使います.

注意注意
スタイルシートの解釈はブラウザによってまちまちであったり,ブラウザによっては対応していなかったりで,スタイルシートによる指定が,必ずその通りに表示されるという保証はありません.

CSS によるマークアップの基本的な書き方は「属性名 : 値」です.複数ある時は「;」で区切ります.例えば,12ピクセルサイズの青い文字を使いたい場合は

font-size: 12px; color: blue
というふうに書きます.

色の指定

ページの背景や文字の色を指定するためには,16進数で表現される,RGB カラーモデルを使います.色を赤(R),緑(G),青(B)の三原色に分解し,それぞれの明るさを数値化する方式です.書き方はいくつかありますが,前に「#」を付け,2桁の16進数(00〜FF)に数値化して並べる書き方がよく使われます.例えば,赤色は #FF0000 と表わされます.またよく使う色などは予め名前が与えられており,その名前で指定することもできます.例えば先程の赤色は" red "となっていてこれはRGBの #FF0000と同じです.赤色のように色を名前で指定できるのは以下の16色です.

色の名前対応するRGB表記色の名前対応するRGB表記
  赤(R)緑(G)青(B)   赤(R)緑(G)青(B)
black # 000000white # FFFFFF
red # FF0000blue # 0000FF
yellow # FFFF00green # 008000
purple # 800080aqua # 00FFFF
gray # 808080silver # C0C0C0
maroon # 800000lime # 00FF00
olive # 808000 # 000080
fuchsia # FF00FFteal # 008080

これら以外の色を使いたいときはRGBで自分で指定します.

色を指定できる対象には以下のような属性があります.

文字に関する指定

文字に関して指定できる属性には以下のようなものがあります.

これら以外にもfont-familyやfont-variantなどがあります.

HTMLでのCSSの使い方はインライン指定,style 要素,外部スタイルシートの3通りがあります.

(1) インライン指定

HTML 文書の中のある特定の要素について,スタイルシート言語で書いたマークアップ(以後,「スタイル指定」と呼ぶことにします)を行いたい場合は,その要素の style 属性の値としてスタイル指定を書きます.例えば,ある段落を12ポイントの青い文字で書きたい場合は以下のようにします.

<p style="font-size: 12pt; color: blue">12ポイントの青い文字</p>

また,head 要素の中に,どのスタイルシート言語を使うか書いておく必要があります.例えば,CSS の場合は

<META http-equiv="Content-Style-Type" content="text/css">

と書いておきます.

(2) style 要素

HTML 文書の中のある種類の要素全部についてスタイル指定を行いたい場合は,style 要素を使います.

例えば,h1 要素の文字を赤色にし,下線を付け,中央揃えにするためには以下のように記述します.

<head>
 <style type="text/css">
  h1 {color: red; text-decoration: underline; text-align: center}
 </style>
</head> 

こうしておいた上で,本文で h1 要素を使うと下のようになります.

見出しのテスト

class 属性

上の例では,文書中のすべての h1 要素に対して同じスタイルを指定します.しかし,同じ種類の要素でも何種類かのスタイルを指定したいことがあります.そのような場合は,必要に応じて要素に class 属性を付けておき,特定の class 属性の値を持った要素に対して「要素名.クラス属性の値 { スタイル指定 }」でスタイルを指定することができます.

例えば,h1 要素で class 属性の値が test-ni-deru のものだけ上と同じスタイルを指定するには

<head>
 <style type="text/css">
  h1.test-ni-deru {color: red; text-decoration: underline; text-align: center}
 </style>
</head>
<body>
 <h1 class="test-ni-deru">重要そうな章</h1>
 <h1>あんまり重要でなさそうな章</h1>
</body>

とします.

span と div 要素

前ページで紹介したdiv 要素や span 要素を使い,それらにクラス属性を付けることで,文書の中の任意の部分にスタイルを指定することができます.以下の例では,段落と表組がまとめて中央に寄せられ,その次の段落では文章の一部分の色が変わっています.

<head>
 <style type="text/css">
  div.center {text-align: center}
  span.blue {color: blue}
 </style>
</head>
<body>
 <div class="center">
  <p>この段落は中央に寄っている.</p>
  <table border="1">
  <tr><td>この表も中央に寄っている.</td></tr>
  </table>
 </div>
  <p>ここは普通の文章<span class="blue">ここだけ青い文字</span>そしてもとに戻る.</p>
</body>

(3) 外部スタイルシート

今までのスタイルの指定のし方は各HTMLファイル固有のものでした.しかし例えばこの情報処理のテキストのように,共通のスタイルを複数の HTML ファイルで指定する場合,HTMLファイル毎にいちいち同じstyle指定をするのは大変です.そこでスタイル指定をHTMLファイルとは独立した別のファイルに書き,各 HTML ファイルの中の link 要素で外部スタイルシートの指定をします.こうすることで,複数のHTMLファイルで共通のスタイル指定が使えるようになります.

外部スタイルシート適用

ひとつの HTML ファイルに複数の外部スタイルシートを指定することができますが,ここではひとつのスタイルシートファイルだけを使うことにします.

まず,HTMLファイルとは別に共通で指定したいスタイルだけをまとめて書いた,CSSファイルを作り保存しておきます.

pagestyle.css ファイル

  span.blue {color: blue}
  div.center {text-align: center}

続いてHTMLファイルの head 要素内に新たにlink 要素を作り,以下の属性を設定します.

<head>
 <link rel="stylesheet" href="./pagestyle.css" type="text/css">
</head>
<body>
 <div class="center">
  <p>この段落は中央に寄っている.</p>
  <table border="1">
  <tr><td>この表も中央に寄っている.</td></tr>
  </table>
 </div>
  <p>ここは普通の文章<span class="blue">ここだけ青い文字</span>そしてもとに戻る.</p>
</body>

これで,いちいちHTMLファイルでスタイルを指定しなくても pagestyle.cssで指定したスタイルが適用されます.他のHTMLファイルで同じスタイルを適用したい時は,同様に link 要素を指定します.

● 練習問題

スタイルシートを使って,自分が作ったWebページの見栄えを良くしてみましょう.

● 宿題

先週の宿題としてみなさんに用意してもらった自分が作りたいWEBページ企画書の内容をHTMLで記述しWebページとして表現してください.

HTMLファイル名は"plan.html"とし,それをpublic_htmlディレクトリ以下の自分が適切と思う場所(必要があれば新規にディレクトリを作成してもよい)に配置し,そのURLを電子メールで先生とTA/SAに送りなさい.