カテゴリ: Bootstrap 更新日: 2025/12/28

ダークモード対応のBootstrapスターター!CSS変数とprefers-color-schemeを完全解説

ダークモード切替スイッチ付きスターター:CSS変数とprefers-color-scheme
ダークモード切替スイッチ付きスターター:CSS変数とprefers-color-scheme

先生と生徒の会話形式で理解しよう

生徒

「最近、夜になるとWebサイトが暗くなる“ダークモード”をよく見かけますが、自分のサイトでもできますか?」

先生

「はい、BootstrapとCSS変数、さらにprefers-color-schemeを使えば、初心者でも簡単にダークモードの切替ができますよ。」

生徒

「難しそうですけど、具体的にどうやってやるんですか?」

先生

「では、実際のHTMLコードを交えて、丁寧にわかりやすく説明していきましょう!」

1. ダークモードってなに?初心者にもわかりやすく解説

1. ダークモードってなに?初心者にもわかりやすく解説
1. ダークモードってなに?初心者にもわかりやすく解説

ダークモードとは、画面の背景を暗くして、目にやさしい表示に切り替える機能のことです。最近のスマートフォンやパソコンでは、OSの設定で「ダークモードにする」が選べるようになっています。これに合わせて、Webサイト側も自動でダークテーマに切り替えると、ユーザーにとってとても見やすくなります。

prefers-color-scheme(プリファーズ・カラー・スキーム)」は、ユーザーの端末がライトモードかダークモードかを教えてくれるCSSの機能です。これを使えば、自動的に色を切り替えることができます。

2. CSS変数を使って色を管理しよう

2. CSS変数を使って色を管理しよう
2. CSS変数を使って色を管理しよう

CSS変数とは、あらかじめ色やサイズを変数のように定義しておき、あとから簡単に変更できる機能です。たとえば、背景色や文字色を--bg-color--text-colorのように指定しておけば、ダークモードに切り替えるときにもその値を変更するだけで済みます。

3. Bootstrapスターターにダークモード切替スイッチを追加する

3. Bootstrapスターターにダークモード切替スイッチを追加する
3. Bootstrapスターターにダークモード切替スイッチを追加する

それでは、実際にダークモード対応のスターターテンプレートを作ってみましょう。CSS変数とprefers-color-schemeを活用し、手動でも切替ができるスイッチ付きのレイアウトです。


<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>ダークモード対応Bootstrapスターター</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css" rel="stylesheet">

  <style>
    :root {
      --bg-color: #ffffff;
      --text-color: #000000;
    }

    [data-theme="dark"] {
      --bg-color: #121212;
      --text-color: #f1f1f1;
    }

    body {
      background-color: var(--bg-color);
      color: var(--text-color);
      transition: background-color 0.3s, color 0.3s;
    }

    @media (prefers-color-scheme: dark) {
      :root {
        --bg-color: #121212;
        --text-color: #f1f1f1;
      }
    }
  </style>
</head>
<body>
  <div class="container py-5">
    <h1 class="mb-4">ダークモード切替スイッチ付きスターター</h1>
    <button id="toggleTheme" class="btn btn-secondary">
      <i class="bi bi-moon"></i> テーマ切替
    </button>
    <p class="mt-4">このテンプレートは、ダークモードとライトモードを切り替える機能を備えています。</p>
  </div>

  <script>
    const toggleBtn = document.getElementById('toggleTheme');
    toggleBtn.addEventListener('click', () => {
      if (document.documentElement.getAttribute('data-theme') === 'dark') {
        document.documentElement.removeAttribute('data-theme');
      } else {
        document.documentElement.setAttribute('data-theme', 'dark');
      }
    });
  </script>
</body>
</html>
ブラウザ表示

4. ダークモード対応のメリットとSEOの効果

4. ダークモード対応のメリットとSEOの効果
4. ダークモード対応のメリットとSEOの効果

ダークモードを導入することによって、ユーザー体験(UX)が向上します。特に夜間や暗い部屋での閲覧が快適になります。また、最近の検索エンジンでは「ダークモード対応」や「モバイルフレンドリーなデザイン」がSEO対策の一部として評価される傾向があり、検索順位の改善にもつながります。

また、Bootstrapを使ったダークモード切替の実装は軽量で高速なため、ページの読み込み速度にも悪影響を与えません。これはGoogleが評価する指標のひとつでもある「PageSpeed」にも好影響を与えます。

5. prefers-color-schemeの注意点と対応方法

5. prefers-color-schemeの注意点と対応方法
5. prefers-color-schemeの注意点と対応方法

ただし、prefers-color-schemeは一部の古いブラウザでは対応していない場合もあります。そのため、今回紹介したように「切替ボタン」を用意することで、ユーザーが自分の好みに応じてテーマを選べるようにしておくのがベストです。

CSSだけに頼らず、JavaScriptを組み合わせることで、より柔軟に制御することが可能になります。特に、企業サイトやブログなど幅広いユーザー層を想定する場合には、このような工夫がとても大切です。

6. BootstrapとCSS変数の組み合わせは初心者にも安心

6. BootstrapとCSS変数の組み合わせは初心者にも安心
6. BootstrapとCSS変数の組み合わせは初心者にも安心

Bootstrapは、すでにスタイルが整っている便利なパーツがたくさん用意されています。そこに、CSS変数を加えることで、テーマ全体の色を一括で管理できます。つまり、背景色や文字色をそれぞれ設定しなくても、一箇所を変えるだけで全体の見た目を変更できるようになるのです。

このような仕組みを活用することで、Web制作の経験が少ない初心者でも、実用的で見やすいダークモード対応のWebサイトを作ることができます。

まとめ

まとめ
まとめ

ダークモード対応Bootstrapスターターの総まとめ

今回の記事では、Bootstrapを使ったダークモード対応のスターターテンプレートについて、初心者にも理解しやすい形で順を追って解説してきました。 ダークモードとは何かという基本的な考え方から始まり、CSS変数を使った色管理の方法、 prefers-color-schemeを利用した自動切替、さらにJavaScriptによる手動切替まで、実践的な内容を一通り学ぶことができました。

ダークモード対応は、単なる見た目の変化ではなく、ユーザー体験を向上させるための重要な工夫です。 特に夜間や暗い環境でWebサイトを閲覧するユーザーにとって、背景が暗く文字が読みやすいデザインは目の負担を減らしてくれます。 最近では、ブログ、コーポレートサイト、管理画面、学習サイトなど、さまざまなWebサイトでダークモードが採用されており、 BootstrapとCSSを組み合わせることで、比較的簡単に導入できる点も大きな魅力です。

CSS変数を使ったテーマ管理は、ダークモード対応をシンプルに保つための重要なポイントです。 背景色や文字色を直接あちこちに書くのではなく、変数としてまとめて定義しておくことで、 ライトモードとダークモードの切替が非常に分かりやすくなります。 これは保守性の高いHTMLとCSSを書くうえでも、とても役立つ考え方です。

prefers-color-schemeと手動切替の使い分け

prefers-color-schemeは、ユーザーの端末設定を尊重できる便利な仕組みですが、 すべての環境で同じように動作するとは限りません。 そのため、今回のスターターテンプレートのように、ボタンでテーマを切り替えられる仕組みを用意しておくことで、 ユーザー自身が好みの表示を選べる柔軟なWebサイトになります。

Bootstrapのボタンやアイコンを使えば、ダークモード切替UIも自然にデザインできます。 見た目が整っていることで、初心者が作ったサイトでも安心感のある印象を与えることができます。 こうした細かな配慮が、結果的に長く使われるWebサイトにつながっていきます。

まとめ用サンプルプログラム


<style>
:root {
    --bg-color: #ffffff;
    --text-color: #000000;
}

[data-theme="dark"] {
    --bg-color: #121212;
    --text-color: #f1f1f1;
}

body {
    background-color: var(--bg-color);
    color: var(--text-color);
}
</style>

<div class="container py-4">
    <h1>ダークモード確認サンプル</h1>
    <p>CSS変数とBootstrapを使ったシンプルなダークモード例です。</p>
    <button class="btn btn-secondary">テーマ切替</button>
</div>
ブラウザ表示
先生と生徒の振り返り会話

生徒

「ダークモードって難しそうだと思っていましたが、CSS変数を使うと意外と整理しやすいんですね。 Bootstrapと一緒に使えるのも便利だと感じました。」

先生

「そうですね。色の管理を変数にまとめることで、後から修正するのも簡単になります。 ダークモード対応は、初心者でも挑戦しやすいテーマのひとつですよ。」

生徒

「prefers-color-schemeで自動切替しつつ、ボタンで変更できる仕組みがあるのは安心ですね。 実際のサイト制作でも使ってみたいです。」

先生

「ぜひ活用してみてください。Bootstrapのスターターテンプレートとして覚えておくと、 今後のWeb制作や学習でも役に立つはずです。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

ダークモードとは何ですか?初心者でもわかるように教えてください。

ダークモードとは、Webサイトの背景を黒やグレーなど暗い色にして、目への負担を軽減する表示モードのことです。特に夜間の閲覧時に見やすくなるのが特徴です。
カテゴリの一覧へ
新着記事
New1
CSS
CSS Gridテンプレート集!よく使うWebレイアウトの作り方
New2
HTML
HTML head要素とは?meta・titleの役割と基本を解説
New3
Bootstrap
Bootstrap固定比率カラム完全ガイド!.col-6・.col-md-4の使い方とベストプラクティスを初心者向けに解説
New4
CSS
CSS Gridとメディアクエリで作る!レスポンシブデザイン完全入門
人気記事
No.1
Java&Spring記事人気No1
CSS
CSSの入れ子構造セレクタ完全ガイド!初心者でもわかる書き方と使い方
No.2
Java&Spring記事人気No2
HTML
HTMLでできること・できないこと|初心者が迷う点を整理
No.3
Java&Spring記事人気No3
CSS
CSS Gridの配置を視覚的にデザイン!grid-template-areasの設計方法
No.4
Java&Spring記事人気No4
CSS
CSSの文字色と背景色の組み合わせで読みやすさアップ!初心者でもわかる可読性の改善方法
No.5
Java&Spring記事人気No5
CSS
CSSで要素のサイズを自動調整!autoとfit-contentの使い方
No.6
Java&Spring記事人気No6
Bootstrap
Bootstrap5グリッドとは?12分割の基本とrow・col・gutterを初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
HTML
HTML html/head/bodyタグの役割|文書構造の基本を整理
No.8
Java&Spring記事人気No8
CSS
CSS Gridレイアウト設計術!固定幅・自動幅・割合幅を組み合わせる方法