外部CSS・内部CSS・インラインCSSの違いと使い分け|読み込み方と読み込まれないときの対処法

2025.07.14

外部CSS・内部CSS・インラインCSSの違いと使い分け|読み込み方と読み込まれないときの対処法

CSSをHTMLに適用する方法は、外部CSS・内部CSS・インラインCSSの3つです。どれを使っても見た目は指定できますが、管理のしやすさや優先順位が違うため、場面に合わせて使い分けます。

この記事では、3つの書き方の違いと使い分けに加えて、外部CSSを読み込むときのパス(ファイルの場所)の書き方、3つを同時に使ったときの優先順位、CSSが読み込まれないときの確認ポイント、WordPressでのCSSの読み込み方までを解説します。

CSSを書く3つの方法の違い

外部CSS内部CSSインラインCSS
書く場所別の .css ファイルHTMLの <style> の中HTMLのタグの style 属性
複数のページで共有できるできないできない
メディアクエリ・:hover書ける書ける書けない
優先度同じ強さのセレクタなら、後に書いたほうが優先最も強い
向いている場面通常のWebサイト制作1ページだけのページ、試しに書くときHTMLメールなど、ほかの方法が使えないとき

迷ったら外部CSSを使ってください。CSSの基本の書き方は「CSSとは?HTMLとの違いと基本の書き方」で解説しています。

外部CSS:CSSファイルを読み込む

CSSを .css という拡張子の別ファイルに書き、HTMLの <head> の中で <link> を使って読み込みます。

HTML
<head>
  <meta charset="UTF-8">
  <title>ページのタイトル</title>
  <link rel="stylesheet" href="css/style.css">
</head>
  • rel="stylesheet":読み込むファイルがスタイルシートであることを示します。書き忘れると、CSSは適用されません。
  • href:CSSファイルの場所(パス)を書きます。

サイトのすべてのページで同じCSSファイルを読み込めば、ファイルを1つ書き換えるだけで、全ページのデザインをまとめて変えられます。一度読み込んだCSSファイルはブラウザに保存(キャッシュ)されるので、2ページ目以降の表示も速くなります。

hrefに書くパスの書き方

href のパスは、そのHTMLファイルがある場所から見た位置で書きます。次のようなフォルダ構成で考えてみましょう。

Plaintext
(サイトのいちばん上の階層)
├── index.html
├── css/
│   └── style.css
├── img/
│   └── logo.png
└── about/
    └── index.html
HTMLファイルhrefの書き方意味
index.htmlcss/style.css同じ階層にある css フォルダの中
about/index.html../css/style.css1つ上の階層(../)に戻ってから css フォルダの中
どこからでも/css/style.cssサイトのいちばん上の階層から見た場所(ルートからの絶対パス)

about/index.html に css/style.css と書くと、ブラウザは about/css/style.css を探しに行き、ファイルが見つからずにCSSが適用されません。階層の違うページが多いサイトでは、/ から始まる絶対パスで書くと、どのページでも同じ書き方で済みます。ただし、/ から始まるパスは、パソコンのファイルを直接ブラウザで開いたときには正しく働かないので、サーバーにアップロードしてから確認してください。

なお、CSSファイルの中で画像を指定する url() のパスは、CSSファイルがある場所から見た位置で書きます。上の構成で css/style.css から img/logo.png を使う場合は、url('../img/logo.png') です。HTMLファイルの場所ではない点に注意してください。

複数のCSSファイルを読み込む

<link> を並べれば、複数のCSSファイルを読み込めます。同じ強さのセレクタで同じプロパティを指定している場合は、後に読み込んだファイルの指定が優先されます。サイト共通のCSSを先に、ページごとのCSSを後に読み込むと、ページごとの調整がしやすくなります。

HTML
<link rel="stylesheet" href="/css/common.css">
<link rel="stylesheet" href="/css/about.css">

@importは使わない

CSSファイルの先頭に @import url('base.css'); と書いて、別のCSSファイルを読み込む方法もあります。ただし、ブラウザは最初のCSSファイルを読み込んでから、次のファイルを読み込み始めるため、表示が遅くなります。複数のCSSファイルを読み込むときは、HTMLに <link> を並べて書きましょう。

内部CSS:HTMLの中に書く

HTMLの <head> の中に <style> を書き、その中にCSSを書きます。書き方はCSSファイルと同じです。

HTML
<head>
  <style>
    body {
      background-color: #f0f0f0;
    }
    @media (max-width: 767px) {
      body {
        font-size: 14px;
      }
    }
  </style>
</head>

HTMLファイル1つで完結するので、試しにCSSを書いてみるときや、ほかのページと共通部分が無い1ページだけのページに向いています。一方、ほかのページとは共有できないので、複数のページで同じ指定を書くと、修正のたびに全ページを直すことになります。

インラインCSS:タグに直接書く

HTMLのタグに style 属性を付け、その中にプロパティと値を書きます。セレクタと { } は書きません。

HTML
<p style="color: red; font-size: 16px;">赤い文字です</p>

赤い文字です

インラインCSSには、次のような制限があります。

  • メディアクエリや :hover が書けない:画面幅に合わせた切り替えや、マウスを重ねたときの変化は指定できません。
  • 再利用できない:同じ見た目にしたい要素すべてに、同じ指定を書く必要があります。
  • 優先度が最も高い:外部CSSや内部CSSから上書きするには !important が必要になり、後から管理しにくくなります。

HTMLメールは、メールソフトによって <style> が無視されることがあるため、インラインCSSで書くのが一般的です。通常のWebページでは、JavaScriptで要素の位置を動かすときなど、限られた場面でだけ使います。

3つを同時に使ったときの優先順位

同じ要素に、外部CSS・内部CSS・インラインCSSで違う指定をした場合、次のように決まります。

  • インラインCSSが最も優先される:外部CSSや内部CSSで何を指定していても、!important が無ければインラインCSSが使われます。
  • 外部CSSと内部CSSは、後に書いたほうが優先される:「外部だから強い」「内部だから強い」ということはありません。HTMLの中で、<link> と <style> のどちらが後にあるかで決まります(セレクタの強さが同じ場合)。
HTML
<head>
  <style>
    .text { color: red; }
  </style>
  <!-- style.css に .text { color: blue; } と書かれている -->
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
  <p class="text">青になる(後に読み込んだ style.css が優先)</p>
  <p class="text" style="color: orange;">オレンジになる(インラインが優先)</p>
</body>

セレクタの強さ(詳細度)が違う場合は、書いた順番より強さが優先されます。優先順位のしくみは「CSSとは?」の「カスケードと優先順位のしくみ」で詳しく解説しています。

CSSが読み込まれないときの確認ポイント

デベロッパーツールで読み込みを確かめる

まず、CSSファイルが読み込めているかを確かめます。Chromeでページを開き、F12キー(Macは Command+Option+I)でデベロッパーツールを開きます。「Network」タブを選んでページを再読み込みし、一覧からCSSファイルを探してください。「Status」が404になっていれば、パスが間違っていてファイルが見つかっていません。一覧にCSSファイル自体が無ければ、<link> の書き方を見直します。

よくある原因

  • パスが間違っている:HTMLファイルの場所から見たパスになっているか確認します。階層の違うページで、同じ相対パスを使い回していないかも確認してください。
  • rel="stylesheet" が無い:<link href="style.css"> だけでは、CSSとして適用されません。
  • ファイル名の大文字・小文字が違う:多くのレンタルサーバー(Linux)では、Style.css と style.css は別のファイルとして扱われます。Windowsのパソコンでは区別されないので、手元では表示されたのに、アップロードすると読み込まれない、ということが起こります。
  • ブラウザのキャッシュ:CSSファイルを書き換えても、ブラウザが保存していた古いファイルを使うことがあります。スーパーリロード(Windowsは Ctrl+F5、Macは Command+Shift+R)で読み込み直してください。公開中のサイトでは、style.css?v=2 のようにファイル名の後ろに番号を付け、更新のたびに番号を変えると、訪問者のブラウザにも新しいファイルが読み込まれます。
  • CSSは読み込めているが、指定が効いていない:「Network」で問題が無い場合は、別の指定に上書きされている可能性があります。「Elements」タブで要素を選び、右側の「Styles」で、取り消し線が付いている指定が無いか確認してください。

WordPressでCSSを読み込む

管理画面の「追加CSS」を使う

少しだけCSSを足したい場合は、管理画面の「外観」→「カスタマイズ」→「追加CSS」に書くのが手軽です(ブロックテーマでは、サイトエディターの「スタイル」から追加CSSを開きます)。テーマを更新しても消えません。

functions.phpでCSSファイルを読み込む

自作のテーマや子テーマでCSSファイルを読み込む場合は、テーマの header.php に <link> を直接書くのではなく、functions.php で wp_enqueue_style を使います。プラグインのCSSとの読み込み順をWordPressが管理してくれます。

PHP
function mytheme_enqueue_styles() {
  wp_enqueue_style(
    'mytheme-custom',                          // 識別用の名前
    get_theme_file_uri('css/custom.css'),      // CSSファイルのURL
    array(),                                   // 先に読み込むCSS(無ければ空)
    '1.0'                                      // バージョン(?ver= として付く)
  );
}
add_action('wp_enqueue_scripts', 'mytheme_enqueue_styles');

CSSを書き換えたときは、4つ目のバージョンの値を変えると、訪問者のブラウザのキャッシュが更新されます。

まとめ:3つの使い分け

  • 外部CSS:通常はこれを使う。href のパスは、HTMLファイルの場所から見た位置で書く
  • 内部CSS:試しに書くときや、1ページだけのページに使う
  • インラインCSS:HTMLメールなど、ほかの方法が使えないときに限る
  • 優先順位はインラインCSSが最も高く、外部CSSと内部CSSは後に書いたほうが優先される
  • 読み込まれないときは、デベロッパーツールの「Network」で404になっていないか確かめる

<link> の media 属性を使って、印刷用など条件付きでCSSファイルを適用する方法は「メディアクエリの書き方」、よく使うプロパティは「CSSプロパティ一覧」で解説しています。

関連記事

PAGE TOP