HTMLでは文書の構造だけを記述し、見た目に関することはスタイルシートを使って記述することが推奨されています。ここではなぜスタイルシートが使われるようになったのかや、スタイルシートをどこに記述すればいいのかについて確認して行きます。
<p> <span style="color:#0000cd; font-size:large;">以前は文書の見た目についても <span style="font-size:x-large; color:#ff0000;">HTMLを使って</span>記述していまし た。</span> </p> <p> <span style="color:#0000cd; font-size:large;">HTML文書として見た時に <span style="font-size:x-large; color:#ff0000;">分かりにくい</span>ことに加えて <span style="font-size:x-large; color:#ff0000;">修正が大変</span>です。</span> </p>
1つ目はHTML文書に見た目に関する記述(すなわちスタイル記述)が増えてくると、文書が何について書かれているか分かりにくくなります。
見た目を取り除いた本来の文書は次の通りです。
<p> 以前は文書の見た目についてもHTMLを使って記述していました。 </p> <p> HTML文書として見た時に分かりにくいことに加えて修正が大変です。 </p>
2つ目はメンテナンス上の問題です。例えば数百ページのWebページが含まれるWebサイトを例に考えてみます。同じWebサイトですから各ページで使われている文字色やレイアウトなどは統一しています。属性を使って見た目を決める場合は全てのページで1つ1つ色などを指定しなければなりません。
ここでデザインを少し変えようと色を変更する必要が出たとしたら、設定は全てのページに直接書き込んでありますので全てのページを1つ1つ書き換えていくしかありません。何度か色を変更して各ページでどのように表示されるのかを確認しようとしたら大変な手間がかかってしまいます。
このようにHTMLを使って直接見た目を記述していくのは様々な問題がありました。そこでHTMLでは文書の構造に関しての記述を行い、見た目に関してはスタイルシートを使うという方式が現在では主流となっています。
見た目のスタイルを指定するための言語がCSSです。CSSとは Cascading Style
Sheets(カスケーディング・スタイル・シート)の略で、カスケーディングとは「階段状の滝のような」という意味です。文書の上方で定義されたスタイルを下方へ引き継ぐ(継承)という特徴を持っているため、それが流れる滝に見立てられたとされています。
では次のページでスタイルシートを使うとどのように便利なのかについてみていきましょう。
スタイルシートを使って見た目に関する設定をした場合にどのようになるのかを確認してみます。ここではスタイルシートは外部ファイルに記述しておいてHTML文書から参照(リンク)する方法を執ります。
<p> 以前は文書の見た目についてもHTMLを使って記述していました。 </p> <p> HTML文書として見た時に分かりにくいことに加えて修正が大変です。 </p>
<title>CSSを使って見た目を定義</title> <p> 以前は文書の見た目についても<span class="red">HTMLを使って</span> 記述していました。 </p> <p> HTML文書として見た時に<span class="red">分かりにくい</span>ことに 加えて<span class="red">修正が大変</span>です。 </p>
スタイルの指定は、外部ファイルに記述します。
@charset "UTF-8"; p { color:#0000cd; font-size:large; } span.red { color:#ff0000; font-size:x-large; }
CSSファイルの一行目には文字コードを書くというルールがあるため、@charset "UTF-8";と入力されています。外部スタイルシートで使用している文字コードを宣言しています。
続いて、p要素及びクラス名"red"のspan要素に対するスタイルシートを使った設定を記述しています。
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>CSSを使って見た目を定義</title>
<link rel="stylesheet" href="../css/style01.css" type="text/css">
</head>
head要素内にlink要素を使いスタイルシートが記述された外部ファイルを読み込みます。
hrefでCSSファイルの保存されているフォルダー名とCSSファイル名を指定します。
relとtypeの値は記述されている通りにします。
このようにスタイルシートは外部ファイルとして分けることができます。複数のHTML文書で同じスタイルシートが記述されたファイルを読み込めば同じ設定を共有することができます。
外部ファイルに記述したスタイルシートで見た目に関して管理することで、もし変更をする場合も1箇所だけ変更すればそのスタイルシートを使っている全てのWebページに反映させることができます。
このようにスタイルシートを使うことで、前のページで問題とした文書の可読性も解決しメンテナンス面でも格段に効率が上がります。
CSSの記述方法は3つあります。
HTMLタグに直接記述する方法は、スタイルを指定したい要素にstyle属性を追加し記述する方法です。特定の要素をピンポイントで指定できるので便利です。
<p style="color: red;">この文字の色を赤にしたい。</p>
HTML文書のhead要素内にstyle要素を作成し、その中にCSSを記述する方法です。一つのページのみに適用するスタイル記述です。
ページごとに記述する必要があるため、ページ数の多いサイトでは管理しづらい欠点がありますが、手軽にCSSを利用できます。
<!DOCTYPE html>
<html>
<head>
<title>style要素内に記述</title>
<style type="text/css">
p {
color: red;
}
</style>
</head>
<body>
<p>この文字の色を赤にしたい。</p>
</body>
</html>
CSSファイルを別に用意し、link要素でHTMLファイルから参照させる方法です。
複数のページに適用できるので、デザインの統一やメンテナンスが容易となります。
HTMLファイルには外部CSSファイルを読み込むためのlink記述をhead要素内に入力します。
<!DOCTYPE html>
<html>
<head>
<title>外部ファイルに記述する</title>
<link href="../css/style04.css" rel="stylesheet" type="text/css">
</head>
<body>
<p>この文字の色を赤にしたい。</p>
</body>
</html>
link記述では、href属性(外部ファイルの場所)、rel属性(リンク先のものはスタイルシートであることを示す)、type属性(メディアタイプがテキストで記述されたCSSであること)を指定します。
@charset "UTF-8";
p {
color: red;
}
<h2>スタイル シートの基本 - 何故スタイルシートが使われるのか</h2> <h4 class="migi">2018.01/13</h4> <h3>スタイル シートを使わないHTML文書</h3> <div class="items"> <p>タグにstyle属性を記述</p> <p>⇒作成ページ:HTMLに直接スタイルを記述(css00.html)</p> <p>文書が何について書かれているかわかりずらい</p> <p>メンテナンスが困難となる</p> </div> <h3>スタイルシートで見た目を記述した場合</h3> <div class="items"> <p>スタイル設定箇所を、span要素あるいはid要素で指定する</p> <p>外部ファイルにスタイルを記述する</p> <p>HTML文書から外部CSSファイルを読み込む</p> <p>⇒作成ページ:CSSを使って見た目を定義(css01.html)</p> </div> <h2>スタイルを記述する場所</h2> <h3>タグにstyle属性で直接記述</h3> <div class="items"> <p>特定の要素(タグ)にピンポイントでスタイルを設定できる</p> <p>⇒作成ページ:タグにstyle属性で直接記述(css02.html)</p> </div> <h3>style要素内に記述する</h3> <div class="items"> <p>ページのhead要素内にstyle要素でスタイルを記述する</p> <p>特定ページにだけスタイルが反映する</p> <p>ページ毎にスタイルを記述する必要があるため、ページ数の多いサイトでは管理しづらい</p> <p>⇒作成ページ:style要素に記述(css03.html)</p> </div> <h3>外部ファイルに記述する</h3> <div class="items"> <p>外部ファイルにスタイルを記述し、保存する</p> <p>HTMLファイルから外部ファイルを読み込む</p> <p>サイト全体にスタイルが反映する</p> <p>効率よくページを修正、管理できる</p> <p>⇒作成ページ:外部ファイルに記述(css04.html)</p> </div>
CSSは1つのセレクタに対してスタイルを重ねて指定することができるため、同じセレクタに別々の指定がされた場合にどちらを優先するのか、細かくルールが決められています。
①タグのstyle属性に直接記述 > ② style要素内に記述 > ③ 外部ファイルに記述 の順に優先される。
優先順位のレベルが同じであれば、あとから書いたものが優先される。
セレクタの種類によって点数が割り当てられており、どのセレクタを指定するかで優先順位が変わります。点数は足し算でカウントされ、合計点数が高いものが優先されます。
指定方法 | 記述例 | 点数 |
---|---|---|
タグの style 属性 | style="" | 1000点 |
id | #sample | 100点 |
class | .sample | 10点 |
属性セレクタ | a {target="_blank"} | 10点 |
疑似クラス | :hover | 10点 |
要素名 | a | 1点 |
疑似要素 | :first-child | 1点 |
全称セレクタ | * | 0点 |