[6.1] スタイルシートとは
スタイルシートとは, HTML 文書の文字の書体や色, 上下左右の余白(マージン)などのデザイン (書式)を指定するためのものです.
HTML のバージョンが上るにつれて, HTML の文書構造(見出し, 段落, 箇条書など)だけでなく, 文字の書体や色などの書式を指定するタグが追加されるようになりました. しかし, HTML ファイル中に構造と書式が混在することで以下のようなデメリットが生じるようになりました
- HTML ファイルの見通しが悪くなる
- 同じ書式を複数の場所で用いる場合, 同じタグを何度も書かなければならない
- 書式の変更の手間が大きい
- 複数の HTML ファイルに同じ書式をもたせる(デザインを統一する)手間が大きい
そこで HTML ファイルには文書の構造だけを記述し, 文書の書式に関する部分を独立させて, 両者を連係させる方法をとることにしました. この「文書の書式に関する部分」が スタイルシートに該当します.
スタイルシートの標準として用いられているのは W3C が策定した「CSS」 (Cascading Style Sheet) です. CSS には現在 3 つのレベルが定義されています.
- CSS レベル 1: W3C が最初に策定した CSS の規格. 1996 年 12 月に勧告されました.
- CSS レベル 2: CSS レベル 1 の拡張仕様. 1998 年 5 月に勧告されました. 2011 年 6 月には改訂版の CSS レベル 2.1 が勧告され, 現在の主要なブラウザは これにほぼ対応しています.
- CSS レベル 3: 最新の CSS の規格で, 現在策定が勧められています.
[6.2] CSS の基本的な書き方
CSS では以下のような形式で, 書式を指定する対象と設定する項目/値を指定します
セレクタ{ プロパティ: 値; プロパティ: 値; ...}
- セレクタ: 書式を指定する対象. 具体的には HTML のタグ, ID, クラスを記述します.
- プロパティ: 設定したい書式の種類. 文字の大きさ, 文字の色, 文字の幅などさまざまなものがあります.
- 値: 個々のプロパティに対する設定値. プロパティによって値の設定方法は異なります.
具体例を以下に示します.
例 1: 文書全体のマージン(余白)を 10 ピクセル(= 7.5 ポイント)に指定する.
body{ margin: 10px;}
例 2: 全ての段落の文字サイズを 12 ポイントにし, 色を青にする.
p{ font-size: 12pt; color: blue;}
[6.3] html 文書内での CSS の適用方法
HTML 文書内で CSS を適用させるには 3 つの方法があります.
[6.3.1] インラインスタイルシート
これは HTML タグ内で直接 CSS を適用する方法です. 以下のように指定します.
<XX style="プロパティ : 値; プロパティ : 値; ...">... </XX>
この場合 HTML 文書内で文書の構造と書式が混在することになるので, CSS を用いるメリットがあまりありません. よってこのような使い方はあまり推奨されません.
[6.3.2] 埋め込みスタイルシート
これは 1 つの HTML 文書の中だけで CSS を適用する方法です. 以下のように指定します.
<html> <head> <style type="text/css"> <!-- セレクタ{ プロパティ: 値; プロパティ: 値; ...} セレクタ{ プロパティ: 値; プロパティ: 値; ...} ... --> </style> </head> ... </html>
HTMLの head タグ内に "style" 要素を作り, スタイルシートを記述します. スタイルシート部分が "<!-- ... -->" で囲まれているのは, スタイルシートに対応していないブラウザではコメント行として扱われるようにするためです.
[6.3.3] 別ファイルからの読み込みスタイルシート
HTML 文書とは別に CSS だけを記述したファイル(以下これを CSS ファイルと呼びます) を作成しておき, それを HTML ファイルから読み込んで CSS を適用する方法です. 以下のように指定します.
<html> <head> <link rel="stylesheet" href="CSS ファイルの URL" type="text/css"> ... </head> ... </html>
「埋め込みスタイルシート」の場合と同様に, head タグ内で指定します. ただしこの場合は "style" 要素ではなく "link" 要素を用います. "href" の値で指定される CSS ファイルには, 「セレクタ{ プロパティ: 値; プロパティ: 値; ...}」の部分を列挙しておきます. CSS ファイルの名前には拡張子 ".css" を付けるのが慣例となっています. CSS ファイルは HTML ファイルと同じ WWW サーバ内ファイルでも外部の WWW サーバのファイルのどちらも指定することができます.
例1: 同じ WWW サーバ内の CSS ファイルを読み込む場合
HTML ファイルと CSS ファイル (style.css) が同じディレクトリにある場合はこのように指定します
<html> <head> <link rel="stylesheet" href="style.css" type="text/css"> ... </head> ... </html>
ファイルの指定は相対パスでも絶対パスでも可能です. ただし絶対パスで指定する場合は apache の設定ファイル /etc/apache2/sites-available/default の "DocumentRoot" ディレクティブで指定されたディレクトリをルートディレクトリとして見た場合の絶対パスに なります.
例2: 外部の WWW サーバの CSS ファイルを読み込む場合
別の WWW サーバにある CSS ファイルを読み込む場合は以下のように指定します.
<html> <head> <link rel="stylesheet" href="http://wwww.hoge.hero.jp/css/style.css" type="text/css"> ... </head> ... </html>
この場合, 別の WWW サーバにある CSS ファイルの利用許可を得ておく必要があります. 無断で利用するのはやめましょう.
[6.3.4] スタイルシートの優先順位
上記の 3 つの方法は併用することもできます. このとき同じセレクタのプロパティに対し異なる値が設定され, 競合することが起こりえます. その場合の優先順位は
- インラインスタイルシート
- 埋め込みスタイルシート
- 読み込みスタイルシート
の順番になります.
[6.4] css ファイルの具体例
ここでは CSS ファイルの具体例を見ていきます. じつはこの文書も CSS ファイルを使用しています. URL は http://www.ep.sci.hokudai.ac.jp/~inex/y2015/css/jitsugi_html5.css です. このなかから基本的なタグに対する書式について抜粋して解説します.
body{ 本文に対する書式 background: white; 背景色を白に指定 } h1{ 見出しに対する書式 font-size: 200%; 文字サイズを 2 倍に background: #CCCC99; 背景色に関する標準値を #CCCC99 (若草色) width: 100%; h1 タグのボックス幅をブラウザ幅と同じに border-style: solid; ボーダー(本文を囲む枠線)を実線に border-width: 1; ボーダー幅を指定(最も細いレベル) border-color: white; ボーダーの色を白に指定 padding: 5px; 内容とボーダーとの間の余白を 5 ピクセルに } strong{ 強調に対する書式 font-weight: normal; 文字の太さを標準値に指定 color: red; 文字の色を赤に指定 } p{ 段落に対する書式 line-height: 1.3em; 行の高さを 1.3em (1.3 文字分)に指定 text-indent: 1em; 一行目の字下げを 1em (1 文字分)に指定 }
この文書の CSS ファイルを変更した場合に書式がどのように変化するか, 以下のリンクをたどってその違いを実感してください.
[6.5] 参考文献
css のプロパティとその値は非常に多く定められています. その全てをこの文書で解説することはできませんので, より詳しく知りたい方のために参考文献を挙げておきます.
- 藤本 壱, 2013, 改訂新版 スタイルシートポケットリファレンス [CSS3 対応],
技術評論社, ISBN 978-4-7741-5486-2
(http://gihyo.jp/book/2013/978-4-7741-5486-2)