CSS Reference

CSS を HTML に適用する方法

CSS を HTML 文書に適用するには、いくつかの方法があります。方法によってメリットや、スタイルが適用されるときの優先順位などが変わるので、それぞれの方法の特性を理解したうえで使い分けましょう。

CSS を HTML に適用する

CSS を HTML 文書に適用するには、いくつかの方法があります。方法によってメリットや、スタイルが適用されるときの優先順位などが変わるので、それぞれの方法の特性を理解したうえで使い分けましょう。

link 要素を使って外部スタイルシートを読み込む

HTML 文書とは別に用意した CSS ファイルである「外部スタイルシート」を、HTML 文書の head 要素内に記述した link 要素で読み込みます。1 つの CSS ファイルを複数の HTML 文書に読み込ませることで、スタイルの統一や変更が容易にできます。

<head>
  <title>カフェラテとカプチーノの違い</title>
  <link rel="stylesheet" href="style.css" />
</head>
<head>
  <title>当店自慢のパンケーキの秘密</title>
  <link rel="stylesheet" href="style.css" />
</head>
body {
  background-image: url(image/bg_body.png);
}
h1 {
  color: white;
  background-color: maroon;
}

link 要素を使って優先・代替スタイルシートを読み込む

link 要素に title 属性を指定すると、「優先」スタイルシートとなります。以下の例では、1 行目の固定スタイルシートは通常通り読み込まれ、2 行目、3 行目の優先スタイルシートは、先に記述した「スタイル 01」だけが読み込まれます。

<link rel="stylesheet" href="style.css" />
<link rel="stylesheet" href="style01.css" title="スタイル01" />
<link rel="stylesheet" href="style02.css" title="スタイル02" />

rel="alternate stylesheet" と title 属性を指定すると、閲覧者が選択できる「代替」スタイルシートを提供できます。以下の例では、閲覧者はブラウザのメニューなどから「スタイル 01」「スタイル 02」という代替スタイルシートを選択できます。

<link rel="stylesheet" "href="style.css">
<link
  rel="alternate stylesheet"
  href="style01.css"
  title="スタイル01"
/>
<link
  rel="alternate stylesheet"
  href="style02.css"
  title="スタイル02"
/>

同じ title 属性値を持った優先スタイルシートと代替スタイルシートはグループとして扱われます。以下の例では、閲覧者が代替スタイルシート「スタイル 02」を選択すると、優先スタイルシート「スタイル 02」が「スタイル 01」に代わって読み込まれます。

<link rel="stylesheet" href="style.css" />
<link rel="stylesheet" href="style01.css" title="スタイル01" />
<link rel="stylesheet" href="style02.css" title="スタイル02" />
<link rel="alternate stylesheet" href="style02.css" title="スタイル02" />

link 要素を使って条件付きで読み込む

media 属性にメディアクエリを指定することで、条件付きで読み込むこともできます。各外部スタイルシートは、指定された条件に当てはまる場合のみ読み込まれます。

<link href="print.css" rel="stylesheet" media="print" />
<link
  href="mobile.css"
  rel="stylesheet"
  media="screen and (max-width: 768px)"
/>

style 要素を使ってスタイルを組み込む

HTML 文書の head 要素内に記述した style 要素に CSS を直接記述することで、文書内にスタイルを指定できます。

<head>
  <title>CSSの読み込み</title>
  <style>
    h1 {
      color: red;
    }
  </style>
</head>

style 属性を使ってスタイルを読み込む

HTML のグローバル属性である style 属性を使うと、対象の要素にのみスタイルを指定できます。以下の例のように、属性値としてプロパティと値を直接記述します。

<p>
  私は、<span style="color: green;">緑色</span> と
  <span style="color: red;">赤色</span>の組み合わせが好きです。
</p>

@import 規則を使ってスタイルを読み込む

@import 規則は CSS の文書内や、HTML 文書の style 要素内に記述して外部のスタイルシートを読み込むための方法です。以下の例のように、@import に続けて url() 関数を記述し、括弧内に CSS ファイルの場所となる URL を指定します。なお、@import 規則は、CSS の文書内に読み込む場合も、HTML 文書の style 要素内に読み込む場合も、必ず、@charset 規則を除く他のスタイルより先に来るように記述します。また、@media 規則など、他の @規則内で使用することはできません。

@import "custom.css";
@import url("style.css");

メディアクエリを使用して、条件付きで読み込むこともできます。

@import "landscape.css" screen and (orientation: landscape);
@import url("../css/print.css") print;

@charset 規則を使って文字エンコーディングを指定する

HTML 文書の文字エンコーディングは UTF-8 になりますので、外部スタイルシートを読み込む際に、CSS ファイル内で非 ASCII 文字、例えば日本語などを使っている場合でも、CSS ファイルの文字エンコーディングが HTML 文書と同じ UTF-8 であれば問題は発生しません。通常、外部から読み込んだ CSS ファイルは、読み込む先の HTML 文書と同じ文字エンコーディングで処理されます。

しかし、何らかの事情で、CSS ファイルの文字エンコーディングに UTF-8 以外を使用したい場合は、CSS ファイル側で文字エンコーディングを指定することが望ましいです。スタイルシートの文字エンコーディングをブラウザに伝える方法はいくつかありますが、@charset 規則を CSS の文書内の先頭に記述することで文字エンコーディングを指定することが可能です。以下の例では、文字エンコーディングを Shift_JIS と定義しています。

なお、@charset 規則は、必ず文書の先頭に、スペースや改行を入れることなく記述しなければなりません。もし複数の @charset 規則が記述された場合、最初に記述されたものだけが有効になります。また、@media 規則など、他の @規則内で使用することはできません。

@charset "Shift_JIS";

補足解説

用語解説など、補足記事を下記にまとめています。