カテゴリ: 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の仕組みで成り立っているため、 一度仕組みを理解すれば他のページやコンポーネントにも応用しやすく、将来的にブランドテーマや色違いテンプレートを作る際にも役立ちます。

カテゴリの一覧へ
新着記事
New1
Bootstrap
Bootstrapのガターをマスター!g-0〜g-5とgx/gyの使い分けコツ
New2
CSS
CSSグリッド完全解説!auto-fitとauto-fillの違いとレスポンシブ設計での正しい使い分け
New3
Bootstrap
Bootstrapブレークポイントの設計図!sm/md/lg/xlの選び方と実務基準
New4
CSS
CSSグリッド入門!grid-areaで名前付き領域を使ったレイアウトの作り方をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
CSS
CSSグリッドレイアウト完全入門!display: grid の基本と使い方を初心者向けにやさしく解説
No.2
Java&Spring記事人気No2
CSS
CSSでテキストの折り返しを完全解説!初心者でもわかる基本と注意点
No.3
Java&Spring記事人気No3
CSS
CSSで要素のサイズを自動調整!autoとfit-contentの使い方
No.4
Java&Spring記事人気No4
CSS
CSSの複数セレクタ指定を完全解説!初心者でもわかるカンマ区切りの使い方
No.5
Java&Spring記事人気No5
CSS
CSSのフレックスボックスで要素を左右に寄せる方法を完全ガイド!初心者でもわかるjustify-content: space-between
No.6
Java&Spring記事人気No6
CSS
CSSフレックスボックス完全解説|Gridとの違いとFlexboxが得意なレイアウトパターンを初心者向けに理解しよう
No.7
Java&Spring記事人気No7
CSS
CSSの斜体文字を完全解説!初心者でもわかるfont-style: italicの使い方
No.8
Java&Spring記事人気No8
CSS
CSS Flexbox入門!display: flexの基本と適用方法を初心者向けに解説