【Advance】Zooloppaをダークモード対応にしてみる

Zooloppaをダークモード対応にする

Zooloppaサイト(index.html)は現時点では何の設定もしていないので、ブラウザの設定を変えても表示は同じです。
ダークモード対応にするためのCSSを書いてみましょう。

ダークモード向けのカラーを設定は、下図のようにしてみます。
白背景部分を黒っぽく反転し、それ以外の部分は全体的にトーンを少し下げ暗くするイメージです。

基本カラーと画像の調整

CSS変数(カスタムプロパティ)について知ろうのレッスンでCSS変数にした4つのカラーうち、濃色2つの色を変えます。

タブレット向けのスタイル指定を書いている@mediaの上に、@media (prefers-color-scheme: dark) {}を追加。

ダークモード用のカラーを設定します。
画像の彩度・明るさを押さえるCSSも書いておきましょう。

@media (prefers-color-scheme: dark) {
    :root{
        --color_main: #638420;
        --color_accent: #d95626;
    }

    img {
        filter: saturate(90%) brightness(85%);
    }
}

白背景色部分の調整

cardクラスの背景色を変えてみます。

CSS変数の追加

@media (prefers-color-scheme: dark) {}の中に.card {...} と書いて色を変える。
これでも良いのですが、最終課題のデザインを見ると詳細ページの背景も白なのですよね。

更に追加するのは面倒なので、CSS変数を作ります。

  • ライトモードは白/ダークモードなら黒になる背景色--color_default-base
  • ライトモードは黒/ダークモードなら白になる文字色 --color_default-text

これは@mediaの外、共通のスタイル指定として書きます。

:root{
  --color_default-base: #FFFFFF;/* 白 */
  --color_default-text: #000000;/* 黒 */
}

作成した変数を使って、bodyに対してデフォルトカラーの設定を追加します。

body{
  margin: 0;
  background-color: var(--color_default-base);
  color: var(--color_default-text);
}

そして、.cardのbackground-colorプロパティの値も変数に置き換えます。
ブラウザで確認して、きちんと変数が読めていればOK。


ダークモード用カラーの設定

--colordefault-base --colordefault-textの、ダークモード用の色を設定します。

@media (prefers-color-scheme: dark) {
  :root{
    --color_default-base: #2d2d2d;
    --color_default-text: #F7F7F7;
    --color_main: #638420;
    --color_accent: #d95626;
  }
    ~ 以下略 ~

ブラウザをリロードすると、.cardクラスの配色が変わっているはずです。

その他のバランスを整える

スクロールダウンすると、文字が読みにくくなっていたり、問題点がいくつかあります。
問題点を見つけたら、その該当箇所のタークモード用カラーを書き足していきましょう。

cardクラス内

背景色を暗くした.cardの中身は、文字が見にくいですね。

以下2つを直します。

  • リンク色(--color_text-link)
  • イベントのカード内文字(.card-description)
@media (prefers-color-scheme: dark) {
  :root{
    --color_default-base: #2d2d2d;
    --color_default-text: #F7F7F7;
    --color_main: #638420;
    --color_accent: #d95626;
    --color_text-link: #66c4ff;
  }

  img {
    filter: saturate(90%) brightness(85%);
  }

  .card-description{
    color: (--color_default-text);
  }

}/* End prefers-color-scheme: dark */

ズーロッパ東京とは、セクション

背景色が明るく、pタグの文字が殆ど見えません。

背景色(--color_accent-subtle)を暗めに変えて、サクッと対応しておきます。

@media (prefers-color-scheme: dark) {}内

  :root{
    --color_default-base: #2d2d2d;
    --color_default-text: #F7F7F7;
    --color_main: #638420;
    --color_accent: #d95626;
    --color_accent-subtle: #1f1d0a;
    --color_text-link: #66c4ff;
  }

ファーストビューの背景画像

ダークモード用に、imgタグにはfilterを追加しました。
ですが、firstviewセクションに設定した背景画像にはフィルターが効いていませんよね。

@media (prefers-color-scheme: dark) {}の中に、下記のように書くと、firstviewセクション全体が暗くなってしまいます。

@media (prefers-color-scheme: dark) {}内

.firstview{
    filter: saturate(90%) brightness(85%);
}

背景画像だけの色味を変えたい場合、ちょっとややこしいCSSを書く必要があります。
疑似要素を使って、背景画像とテキストの間に1つレイヤー(要素)を追加するようなCSSを書きます。
その追加したレイヤーにフィルターをかけることで、背景画像だけを暗くするイメージです。

@media (prefers-color-scheme: dark) {}内

.firstview{
    position: relative;
    z-index: 0;
}

.firstview::before{
    content: '';
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    background: inherit;
    filter: saturate(90%) brightness(85%);
    z-index: -1;
}

疑似要素(:before)や絶対配置(position: absolute;)については、以下の講座をご確認下さい。

その他・全体調整

大まかな配色が出来たら「そのままでも影響はないけれど、違和感があるなぁ…」という部分を調整していきます。

例えば、以下のような部分です。

  • 各セクション背景色
  • headerのlogo(画像)の色味
  • text-whiteクラスの色

今回はダークモードの配色がキッチリ決まっていませんから、ここまで暫定で決めた色・Filterなどの設定を微調整しても良いです。
全体のバランスを見ながら、整えてみて下さい。

本レッスン素材として、以下のファイルをダウンロードしてご確認いただけます。

  • レッスン部分の内容:indexAdv-01.html/css
  • 全体を調整したもの:indexAdv-02.html/css

完成見本とは全く別のカラーリングをしてみても面白いですね。
お好きなように設定してみて下さい!

無料ビデオ講座のお知らせ

Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。

無料講座一覧を見る

×