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

Bootstrapでダーク/ライト切り替えを滑らかに!初心者でもわかるアニメーションとprefers-reduced-motion対応

ダーク/ライトのアニメーション切替:prefers-reduced-motion配慮
ダーク/ライトのアニメーション切替:prefers-reduced-motion配慮

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

生徒

「Bootstrapでライトテーマからダークテーマに切り替えると、色が急に変わってびっくりしませんか?」

先生

「確かに、背景が一瞬で黒くなると目が疲れることがありますね。でもCSSのアニメーションを入れると、ふわっと滑らかに切り替えられますよ。」

生徒

「でも、アニメーションが苦手な人もいると聞きました。そういう人にはどう対応するんですか?」

先生

「そこで重要なのが prefers-reduced-motion というアクセシビリティ機能です。動きを少なくしたい利用者には、自動でアニメーションを抑えることができます。」

1. ダーク/ライト切り替えのアニメーションとは?

1. ダーク/ライト切り替えのアニメーションとは?
1. ダーク/ライト切り替えのアニメーションとは?

Bootstrapのテーマ切替は、data-bs-theme 属性を使って色を切り替える仕組みになっています。 ライトテーマでは白背景、ダークテーマでは黒背景をCSS変数で切り替えられるため、 初心者でも簡単にテーマ対応できるのが特徴です。

しかし、その切り替えが「カチッ」と一瞬で起こると視覚的に強すぎる場合があります。 そこで、CSSの transition を使って、色がゆっくり変わる演出を加えます。 たとえば背景色が真っ白から黒へ、スッとフェードするようなイメージで、とても見やすく快適になります。

2. prefers-reduced-motionとは?動きに弱い人への配慮

2. prefers-reduced-motionとは?動きに弱い人への配慮
2. prefers-reduced-motionとは?動きに弱い人への配慮

prefers-reduced-motion は、利用者の環境設定で「動きを減らす」を選択している場合に反応するCSS機能です。 オペレーティングシステムの設定に連動しており、アニメーションや動きが苦手なユーザーにとって大切なアクセシビリティ機能です。

この設定がオンの場合、Webサイト側もアニメーションを抑え、動きを少なくしてあげるべきだとされています。 Bootstrapでのダーク/ライト切替でも、この配慮を取り入れることでより多くの利用者に優しいWebデザインになります。

3. ダーク/ライト切り替えを滑らかにするCSS(prefers-reduced-motion対応)

3. ダーク/ライト切り替えを滑らかにするCSS(prefers-reduced-motion対応)
3. ダーク/ライト切り替えを滑らかにするCSS(prefers-reduced-motion対応)

以下のコードでは、ライトテーマとダークテーマの色変化をCSS変数で管理し、さらにアニメーションを追加することでなめらかな切り替えを実現しています。 また、prefers-reduced-motion に対応し、動きを減らしたいユーザーにはアニメーションを無効化するようにしています。


<style>
/* ライトテーマ */
.theme-root {
    --site-bg: #ffffff;
    --site-text: #222222;
    --site-accent: #005eff;
}

/* ダークテーマ */
.theme-root[data-bs-theme="dark"] {
    --site-bg: #000000;
    --site-text: #ffffff;
    --site-accent: #4bc3ff;
}

/* アニメーション */
.theme-root, 
.theme-root p, 
.theme-root h1, 
.theme-root h2, 
.theme-root a {
    transition:
        background-color 0.4s ease,
        color 0.4s ease,
        border-color 0.4s ease;
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
    .theme-root,
    .theme-root p,
    .theme-root h1,
    .theme-root h2,
    .theme-root a {
        transition: none;
    }
}

/* 色適用 */
.theme-root {
    background-color: var(--site-bg);
    color: var(--site-text);
}

.theme-root a {
    color: var(--site-accent);
}
</style>

<!-- div をテーマルートとして扱う -->
<div class="theme-root p-4" data-bs-theme="dark">
    <h2>アニメーション付きテーマ切替の例</h2>
    <p>背景や文字の色がゆっくりと変わり、視覚的に優しいテーマ切替ができます。</p>
    <a href="#">リンクカラーもテーマに合わせて変わります</a>
</div>
ブラウザ表示

4. アニメーションを取り入れるメリットと注意点

4. アニメーションを取り入れるメリットと注意点
4. アニメーションを取り入れるメリットと注意点

ダーク/ライト切り替えでアニメーションを使う最大のメリットは、画面の見やすさが大きく向上することです。 背景が一瞬で変わらないため、読み込み中の違和感が減り、ブロガーやWeb制作初心者でもプロっぽい演出を取り入れることができます。

しかし一方で、アニメーションに敏感なユーザーが一定数存在します。 そのため、prefers-reduced-motion を使用して、利用者の設定に合わせて動きを抑える配慮が必要です。 これはアクセシビリティにもSEOにもプラスに働き、やさしいWeb制作の基本姿勢として非常に重要です。

Bootstrapのテーマ切替はCSS変数とdata-bs-themeの仕組みで成り立っているため、 一度仕組みを理解すれば他のページやコンポーネントにも応用しやすく、将来的にブランドテーマや色違いテンプレートを作る際にも役立ちます。

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のorientation(向き)設定ガイド
No.6
Java&Spring記事人気No6
CSS
CSSのmin-widthとmax-widthの違いを徹底解説!モバイルファースト設計の基本
No.7
Java&Spring記事人気No7
CSS
CSSで要素を消す方法を完全ガイド!display:noneとvisibility:hiddenの違い
No.8
Java&Spring記事人気No8
Bootstrap
Bootstrap Iconsの使い方を完全解説!初心者でもわかるアイコン基本操作ガイド