Vuetify로 다크와 라이트 테마를 전환하는 기능 구현

6629 단어 Vue.jsVuetify
아래 이미지와 같이 Vuetify에서 다크(dark)와 라이트(light) 테마를 전환하는 기능을 구현하는 방법입니다.



다크와 라이트 테마를 전환하는 기능


<template>
  <div>
    <v-switch
      v-model="theme"
      :prepend-icon="themeIcon"
    ></v-switch>
  </div>
</template>

<script lang="ts">
import Vue from 'vue'

export default Vue.extend({
  data() {
    return {
      theme: true
    }
  },
  computed: {
    themeIcon(): string {
      return this.theme ? 'mdi-weather-night' : 'mdi-weather-sunny'
    }
  },
  watch: {
    theme() {
      this.$vuetify.theme.dark = this.theme
    }
  }
})
</script>
v-model="theme" 로 시계로 모니터링합니다.this.$vuetify.theme.dark = true or false 에서 다크와 라이트 테마를 전환하고 있습니다.

보기 좋게 하기 위해 computed 로 아이콘의 변경도 구현하고 있습니다.

테마별 색상 설정



nuxt.config.js
import colors from 'vuetify/es5/util/colors'

export default {
  /*
   ** vuetify module configuration
   ** https://github.com/nuxt-community/vuetify-module
   */
  vuetify: {
    customVariables: ['~/assets/variables.scss'],
    theme: {
      dark: true,
      themes: {
        dark: {
          primary: colors.blue.darken2,
          accent: colors.grey.darken3,
          secondary: colors.amber.darken3,
          info: colors.teal.lighten1,
          warning: colors.amber.base,
          error: colors.deepOrange.accent4,
          success: colors.green.accent3
        },
        light: {
          primary: colors.red.darken2,
          accent: colors.blue.darken3,
        }
      }
    }
  }
}


테마별 색상 설정은 nuxt.config.js에서 할 수 있습니다.

마지막으로



Vuetify를 사용하면 쉽게 테마 전환을 구현할 수 있으므로 편리합니다.

좋은 웹페이지 즐겨찾기