第9章
ダークモード対応 — dark:修飾子の使い方
約4分
Tailwindは dark: プレフィックスでダークモードのスタイルを指定できます。状態修飾子(hover: など)と同じプレフィックス方式なので、考え方はそのまま応用できます。
学習者ダークモードって、全部のページに自分でCSSを書き足すのかと思ってた…。Tailwindだと簡単にできるの?
先生ライト用クラスの隣に dark: 付きを足すだけ。bg-white dark:bg-gray-900 のようにね。OS設定との連動も標準でできるよ。

基本の使い方
<div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100">
<p>テキスト</p>
<button class="bg-blue-600 dark:bg-blue-500 text-white">
ボタン
</button>
</div>html
ライト / ダークで必要な色を並べて確認
Light
読みやすいカード
背景、本文、補助テキスト、枠線のコントラストを確認します。
Dark
暗い背景でも読めるカード
dark: では単に白黒を反転せず、少し淡い色を選ぶのが実務的です。
ダークモードは dark:bg-black dark:text-white のように極端な反転だけで済ませると、目に強すぎたり、補助テキストが読みにくくなったりします。gray-900 / slate-900 などの濃いグレーを背景にし、本文は gray-100、補助テキストは gray-400 程度に分けると自然です。
OSの設定に連動(デフォルト)
デフォルトでは prefers-color-scheme: dark メディアクエリに連動します。ユーザーのOS設定が「ダーク」のときに dark: クラスが有効になります。
<!-- OS設定がダークのとき自動でダークモード -->
<body class="bg-white dark:bg-gray-950">
...
</body>html
手動切り替え(クラスベース)
ボタンでテーマを切り替えたい場合は、html 要素に dark クラスを付け外しします。
v4 の設定:
/* globals.css */
@import "tailwindcss";
@variant dark (&:where(.dark, .dark *));css
v3 の設定:
// tailwind.config.js
module.exports = {
darkMode: 'class',
// ...
}js
React でのトグル実装:
function ThemeToggle() {
const toggleDark = () => {
document.documentElement.classList.toggle('dark')
}
return <button onClick={toggleDark}>テーマ切り替え</button>
}tsx
実践:ダークモード対応カード
<div class="
bg-white dark:bg-gray-800
border border-gray-200 dark:border-gray-700
rounded-xl p-6
shadow-sm dark:shadow-none
">
<h2 class="text-gray-900 dark:text-gray-100 font-semibold text-lg">
カードタイトル
</h2>
<p class="text-gray-500 dark:text-gray-400 mt-2">
説明テキスト
</p>
</div>html
ちゃんと使うためのポイント
-
dark:クラスはライト用クラスと並べて書く(bg-white dark:bg-gray-900) - OS連動で十分な場合はデフォルト設定のまま使う
- ボタンで切り替えるなら
darkMode: 'class'(v3)または@variant dark(v4)を設定 - 色の選択はライト・ダーク両方で確認する
次の章では、コンポーネントのパターンを効率よく組み立てる方法を学びます。
Tailwind CSSクイズに挑戦するこの章で学んだTailwind CSSの知識を、4択クイズでアウトプットして定着させよう
