カテゴリ: Bootstrap 更新日: 2026/01/06

CSS変数でテーマ切替を完全ガイド!Bootstrapでライトとダークを一瞬でスイッチする実装

CSS変数でテーマ切替:ライト/ダークを一瞬でスイッチする実装
CSS変数でテーマ切替:ライト/ダークを一瞬でスイッチする実装

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

生徒

「Bootstrapでライトモードとダークモードを切り替える方法ってあるんですか?」

先生

「はい、CSS変数を使えば、ボタンを押すだけでテーマを切り替えることができます。」

生徒

「CSS変数ってなんですか?難しい設定が必要ですか?」

先生

「CSS変数は、色やサイズを名前で登録しておいて、どこからでも同じ値を使える便利な仕組みです。初心者でも簡単にテーマ切替を実現できますよ。」

1. CSS変数とは?初心者向けに解説

1. CSS変数とは?初心者向けに解説
1. CSS変数とは?初心者向けに解説

CSS変数とは、スタイルシートで繰り返し使う色やサイズを「変数」という形で保存しておける機能です。変数を設定しておくと、デザインを変更したいときに変数の値を変えるだけで、サイト全体のデザインを一括で変更できます。例えば、背景色を指定するときに直接「白」と書くのではなく、変数--bs-body-bgを使って「白」と登録しておけば、後から一か所書き換えるだけで済みます。

2. ライトモードとダークモードの基本設計

2. ライトモードとダークモードの基本設計
2. ライトモードとダークモードの基本設計

Bootstrapでは、標準でライトモード(白背景・黒文字)が使われます。ここにCSS変数を活用して、ダークモード(黒背景・白文字)も同時に定義することで、ユーザーの好みに応じて切り替えられるようにできます。重要なのは、「ライト」と「ダーク」の両方を同じCSSファイルに書いておくことです。切り替えはdata-themeという属性を使って実現します。

3. 実際のテーマ切替のCSSコード例

3. 実際のテーマ切替のCSSコード例
3. 実際のテーマ切替のCSSコード例

以下のコードでは、:root(ルート要素)にライトモードの色を定義し、[data-theme="dark"]の中でダークモード用の色を上書きしています。


<style>
:root {
    --bs-body-bg: #ffffff;  /* ライト背景 */
    --bs-body-color: #000000; /* ライト文字色 */
}

[data-theme="dark"] {
    --bs-body-bg: #121212;  /* ダーク背景 */
    --bs-body-color: #ffffff; /* ダーク文字色 */
}
</style>

<div id="themeArea" data-theme="dark" class="p-3" style="background-color: var(--bs-body-bg); color: var(--bs-body-color);">
    テーマ切替のテストコンテンツ
</div>
ブラウザ表示

この時点で、data-theme属性を切り替えれば、背景色と文字色が瞬時に入れ替わります。

4. ボタンでライト/ダークを切り替える方法

4. ボタンでライト/ダークを切り替える方法
4. ボタンでライト/ダークを切り替える方法

実際のサイトでは、ユーザーがクリックしてテーマを切り替える仕組みを作ることが多いです。JavaScriptをほんの少し書くだけで、data-themeを切り替えることができます。


<style>
:root {
    --bs-body-bg: #ffffff;
    --bs-body-color: #000000;
}
[data-theme="dark"] {
    --bs-body-bg: #121212;
    --bs-body-color: #ffffff;
}
</style>

<div id="themeArea" class="p-3" style="background-color: var(--bs-body-bg); color: var(--bs-body-color);">
    ボタンでテーマを切り替えてみましょう
</div>

<button id="switchBtn" class="btn btn-primary mt-3">テーマ切替</button>

<script>
const btn = document.getElementById("switchBtn");
const area = document.getElementById("themeArea");
btn.addEventListener("click", () => {
  if (area.getAttribute("data-theme") === "dark") {
    area.removeAttribute("data-theme");
  } else {
    area.setAttribute("data-theme", "dark");
  }
});
</script>
ブラウザ表示

このように、ボタンを押すたびにライトモードとダークモードが切り替わります。

5. Bootstrapのボタンやテキストもテーマ対応させる

5. Bootstrapのボタンやテキストもテーマ対応させる
5. Bootstrapのボタンやテキストもテーマ対応させる

単純に背景と文字色だけを切り替えるだけでなく、Bootstrapのボタンや見出しにもテーマカラーを反映できます。例えば、プライマリーボタンをライトモードではオレンジ、ダークモードでは少し淡いオレンジに切り替えるように設定することも可能です。


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

[data-theme="dark"] {
    --bs-body-bg: #121212;
    --bs-body-color: #ffffff;
}

/* ボタンの色を直接指定 */
.btn-primary {
    --bs-btn-bg: #ff6600;
    --bs-btn-border-color: #ff6600;
}
[data-theme="dark"] .btn-primary {
    --bs-btn-bg: #ffaa66;
    --bs-btn-border-color: #ffaa66;
}
</style>

<div id="themeArea" class="p-3" style="background-color: var(--bs-body-bg); color: var(--bs-body-color);">
    <button class="btn btn-primary">テーマ対応ボタン</button>
</div>
ブラウザ表示

これで、背景や文字色だけでなく、ボタンの見た目もテーマに合わせて変化させられます。

6. 実運用で気を付けたいポイント

6. 実運用で気を付けたいポイント
6. 実運用で気を付けたいポイント

実際に運用する場合、以下の点に注意するとスムーズにテーマを導入できます。

  • CSS変数を使うと色を一括管理できるので、後から配色を変更するときも楽になります。
  • ライト/ダークでコントラスト(明暗の差)を意識することが大切です。見やすさが失われないように配慮しましょう。
  • テーマ切替の状態をユーザーごとに保存したい場合は、JavaScriptでローカルストレージに記録する方法もあります。

7. 初心者でもできるCSS変数×Bootstrapによるテーマ切替のポイント

7. 初心者でもできるCSS変数×Bootstrapによるテーマ切替のポイント
7. 初心者でもできるCSS変数×Bootstrapによるテーマ切替のポイント

CSS変数とBootstrapを組み合わせることで、複雑なSassの設定や特別なビルド環境を用意しなくても、シンプルな構成でテーマ切替を実装できます。 背景色や文字色、ボタンカラーなどをCSS変数として定義しておけば、ライトモードとダークモードの切替も一瞬で反映されるため、管理やメンテナンスが非常に楽になります。

初心者の場合でも、数行のCSSと最低限のJavaScriptを書くだけで、最近よく見かけるダークモード対応サイトを作成できます。 Bootstrapの既存デザインを活かしながらテーマを切り替えられるため、見た目の統一感を保ちつつ、ユーザーにとって使いやすいWebサイトを構築できるのが大きなメリットです。

まとめ

まとめ
まとめ

ここまで、CSS変数とBootstrapを使ったライトモードとダークモードのテーマ切替について、基礎から実践まで順番に学んできました。CSS変数を使う最大のメリットは、色やデザインの設定を一か所で管理できる点です。背景色や文字色、ボタンカラーなどを直接指定するのではなく、変数として定義することで、デザイン変更やテーマ切替が非常に簡単になります。特にBootstrapと組み合わせることで、既存のコンポーネントデザインを活かしながら、柔軟なテーマ対応が可能になります。

ライトモードとダークモードの切替は、見た目をおしゃれにするだけでなく、ユーザー体験の向上にも直結します。明るい環境ではライトモード、暗い環境ではダークモードを好むユーザーは多く、CSS変数によるテーマ切替は、現代のWebサイト制作では欠かせないテクニックの一つと言えます。今回紹介したdata-theme属性を使う方法は、HTML構造を大きく変える必要がなく、初心者にも取り入れやすいのが特徴です。

また、JavaScriptを使ってボタン操作でテーマを切り替える方法も学びました。難しいロジックは必要なく、属性の有無を切り替えるだけでテーマ変更が実現できる点は、CSS変数ならではの強みです。さらに応用として、ローカルストレージを使えば、ユーザーが選択したテーマを保存し、次回アクセス時にも同じテーマを表示することができます。これは実運用のWebサイトでは非常に重要なポイントになります。

Bootstrapのボタンやテキストに対してもCSS変数を活用することで、テーマごとに配色を切り替えられるようになります。これにより、サイト全体の統一感を保ちながら、ライトモードとダークモードの両立が可能になります。CSS変数、Bootstrap、JavaScriptを組み合わせることで、拡張性が高く、メンテナンスしやすいテーマ切替設計が完成します。

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


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

[data-theme="dark"] {
    --bs-body-bg: #1a1a1a;
    --bs-body-color: #ffffff;
}

.summary-area {
    padding: 20px;
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
}
</style>

<div id="summaryArea" class="summary-area">
    CSS変数とBootstrapを使ったテーマ切替まとめ表示
</div>

<button id="summaryBtn" class="btn btn-primary mt-3">テーマ切替</button>

<script>
const btn = document.getElementById("summaryBtn");
const area = document.getElementById("summaryArea");
btn.addEventListener("click", () => {
    if (area.getAttribute("data-theme") === "dark") {
        area.removeAttribute("data-theme");
    } else {
        area.setAttribute("data-theme", "dark");
    }
});
</script>
ブラウザ表示
先生と生徒の振り返り会話

生徒

「CSS変数を使うと、テーマ切替がこんなに簡単になるとは思いませんでした。色を一か所で管理できるのが便利ですね。」

先生

「その通りです。CSS変数はデザイン管理の基本になります。Bootstrapと組み合わせれば、実務レベルのテーマ切替もすぐに実装できますよ。」

生徒

「data-theme属性を切り替えるだけで、背景色や文字色、ボタンまで変わるのが印象的でした。」

先生

「HTML構造を壊さずに切り替えられるのがポイントですね。将来的にテーマを増やす場合も、CSS変数を追加するだけで対応できます。」

生徒

「これならダークモード対応のWebサイトも自信を持って作れそうです。実際の案件でも使ってみたいです。」

先生

「ぜひ挑戦してください。CSS変数とBootstrapのテーマ切替は、これからのWeb制作で必ず役立つスキルですよ。」

2026年最新 スキルアップ・実践セミナー

【60分集中】CSSを1行も書かない!?Bootstrap 5ユーティリティクラス活用で開発工数を50%削減

「スピード」が武器になる。Bootstrap 5で商用クオリティのWebサイトを高速構築。

本講座では、世界シェアNo.1のフレームワークBootstrap 5を使いこなし、ゼロからレスポンシブサイトを組み上げる「現場最速のワークフロー」を学びます。単なる導入に留まらず、ユーティリティクラスを活用した効率化と、実務で必須となるカスタマイズ技法を60分で完全習得します。

具体的なワークショップ内容と環境

【つくるもの】
モダンなランディングページ(LP)やダッシュボードのプロトタイプを作成します。ナビゲーション、ヒーローセクション、カードレイアウト、フッターなど、Bootstrapのコンポーネントを組み合わせて「一瞬で形にする」感動を体験してください。

【開発環境】
VS CodeにBootstrap 5専用のSnippet(補完機能)を導入し、手入力を最小限にする環境を構築。最新のCDN利用法や、表示速度(Core Web Vitals)を意識した最適な読み込み設定など、プロの初期設定を伝授します。

この60分で得られる3つの革新スキル

1. グリッドシステムの完全マスター

スマホ・タブレット・PCでレイアウトを自由自在に切り替える「ブレイクポイント」の極意を学びます。

2. ユーティリティクラスによる爆速デザイン

CSSを1行も書かずに、マージン・パディング・カラーを制御。開発工数を半分以下にする実戦術を習得します。

3. 脱・標準デザインのカスタマイズ

「Bootstrap感」を消し、独自のブランドイメージに合わせるための、上書きの作法とデザインの整え方を伝授します。

※本講座は、HTML/CSSの基本を理解した方向けの「実践加速講座」です。制作会社のコーダーや副業フリーランスとして「案件の回転率」を上げ、市場価値を最大化させたい方をモクモクがバックアップします。

【60分集中】CSSを1行も書かない!?Bootstrap 5ユーティリティクラス活用で開発工数を50%削減

Bootstrap 5を楽しみながら、一緒に学びましょう!

各回少人数・マンツーマン形式で徹底サポート

このセミナーの詳細・お申し込みはこちら
カテゴリの一覧へ
新着記事
New1
Bootstrap
Bootstrapテーブル入門:.table /.table-striped /.table-hover /.table-bordered をやさしく解説
New2
CSS
スマホの文字化け・崩れを防ぐ!メディアクエリで文字の改行と非表示を操る完全ガイド
New3
HTML
HTMLのvideo属性一覧を完全整理!初心者でもわかるposter・preload・loopの使い方
New4
Bootstrap
Bootstrap入力グループ完全ガイド|初心者でもわかる.input-groupの使い方
人気記事
No.1
Java&Spring記事人気No1
CSS
CSSのメディアタイプ完全ガイド!画面表示と印刷用スタイルを切り替える方法
No.2
Java&Spring記事人気No2
CSS
CSSで要素のサイズを自動調整!autoとfit-contentの使い方
No.3
Java&Spring記事人気No3
CSS
CSSのフレックスボックスで使うgapの使い方を完全ガイド!初心者でもわかる余白調整の基本
No.4
Java&Spring記事人気No4
CSS
レスポンシブデザインの要!ブレイクポイントの決め方とCSSの書き方ガイド
No.5
Java&Spring記事人気No5
CSS
CSSのmin-widthとmax-widthの違いを徹底解説!モバイルファースト設計の基本
No.6
Java&Spring記事人気No6
CSS
スマホの向きでデザインが変わる!CSSのorientation(向き)設定ガイド
No.7
Java&Spring記事人気No7
CSS
CSSで要素を消す方法を完全ガイド!display:noneとvisibility:hiddenの違い
No.8
Java&Spring記事人気No8
Bootstrap
Bootstrap Iconsの使い方を完全解説!初心者でもわかるアイコン基本操作ガイド