Blog

Nuxt.js + Vuetify でダークモードに対応してみた

色々なサイトを見ていますが、ダークモード対応しているサイトはごくわずかですね。他のサイトはやってないのでこれはチャンスってことで今回はNuxt.js + Vuetifyでダークモード対応にしたお話です。

2021/08/16
#Vuetify #Nuxt.js #Vue

目的

なんといってもダークモードに対応させること

方法

Vuetify 編

Vuetify のコンポーネントを使っている部分はすごく簡単にダークモードにすることができる

mounted() {
  if (window.matchMedia('(prefers-color-scheme: dark)').matches) { // 使っているOSがダークモード設定しているかどうか判断する ダークモード以外のときは「false」
    this.$vuetify.theme.dark = true // Vuetifyの設定をダークテーマに変更する
  }
}

最初は created()の中に書いていましたがライフサイクル的にダメですね。 (なんでもかんでも created()に書くのはやめましょう…)

独自 CSS 編

SCSS で書いているので少し遠回りをしないとダメっぽい 最終的には以下のような感じで落ち着いた

:root {
  @media (prefers-color-scheme: light) {
    --color-base: white;
    --color-main: black;
  }


  @media (prefers-color-scheme: dark) {
    --color-base: black;
    --color-main: white;
  }
}
$COLOR_BASE: var(--color-base);
$COLOR_MAIN: var(--color-main);

※SCSS の変数を直接しようしてもダメ

まとめ

意外とさくっとダークモード対応させることができました 日頃からダークモードなので対応してくれる Web サイトやアプリが増えるといいですね。 本サイトのソースコードはここにおいてありますのでぜひ参考にしてください。 では、次回の記事にて