CSS・並べる・配置する

ダークモードに対応しよう

夜のスマホは黒い画面が目にやさしい。OSの「ダークモード」設定をCSSで受け取って、ページの配色を自動で切りかえる方法を覚えよう。

夜、ふとんの中で見るまぶしい白い画面——つらいですよね。だから多くの人が、スマホやPCをダークモード(黒基調の配色)に設定しています。その設定をCSSで受け取れば、あなたのページも自動で夜仕様に切りかわります。

書き方:ふだんの色+夜の上書き

まずふだん(ライト)の色を書き、ダークモードのときだけ上書きします。

body {
  background: #ffffff;
  color: #333333;
}

@media (prefers-color-scheme: dark) {
  body {
    background: #1b1b1f;
    color: #e6e6e6;
  }
}

ダークモード設定の人がページを開くと、背景が濃い色・文字が明るい色に自動で切りかわります。JavaScriptは1行も要りません。

CSSスマホでも見やすく:メディアクエリ@mediaそのものの仕組みは、メディアクエリの回でおさらいできます

動きを見てみよう

本物はOSの設定にブラウザが自動で反応しますが、このデモではボタンで疑似的に切りかえます。

本物のページでは、このボタンの役目をOSの設定が果たします。設定を切りかえた瞬間、開いているページの色も変わります。

夜の配色、3つの気をつけどころ

  • 真っ黒×真っ白にしない#000背景に#fff文字はコントラストが強すぎて目が疲れます。背景は#1b1b1fのような少し明るい黒、文字は#e6e6e6のような少し暗い白が定番です
  • 読めるかは夜も確認 — 色を反転すると、ライトでは読めた組み合わせが読めなくなることがあります。ダークモードでもコントラスト比の合格ラインは同じです
  • 全部の色を用意しなくていい — まずは背景と文字色だけで十分。カードや枠線は、ページが育ってから少しずつ
アクセシビリティ読める色、読めない色(コントラスト)コントラスト比の確かめ方は、アクセシビリティコースのこの回でCSSCSS変数で色をまとめて管理色を1か所で管理するCSS変数の回はこちら

このレッスンのまとめ

  1. @media (prefers-color-scheme: dark)で、ダークモード設定の人にだけ効くCSSが書ける
  2. ふだんの色を先に書き、ダークのときだけ上書きする
  3. 真っ黒×真っ白は避けて、少しやわらげた黒と白を使う

やってみよう

今回学んだ「ダークモード対応」は、しまちゃんのページには使いません(クリーム色のやさしい世界観で統一しています)。読みものの多いサイトや、夜に使われるページで喜ばれる工夫です。覚えておいて、必要になったら使いましょう。