Vue3+Vuetify3 多主题配置

简介: 上一篇文章只配置了两个主题,现在我们来配置多主题。 前面步骤参:Vue3+TypeScript+Vuetify+Vite 实现动态主题切换 - TeHub

上一篇文章只配置了两个主题,现在我们来配置多主题。 前面步骤参:Vue3+TypeScript+Vuetify+Vite 实现动态主题切换 - TeHub


我们打开vuetify.ts文件,修改我们之前定义的主题


// Styles
import '@mdi/font/css/materialdesignicons.css'
import 'vuetify/styles'
// Vuetify
import { createVuetify } from 'vuetify'
const customDarkTheme = {
    dark: true,
    colors: {
        background: "#15202b",
        surface: "#15202b",
        primary: "#3f51b5",
        secondary: "#03dac6",
        error: "#f44336",
        info: "#2196F3",
        success: "#4caf50",
        warning: "#fb8c00",
    },
};
const customLightTheme = {
    dark: false,
    colors: {
        background: '#808080',
        surface: '#6200EE',
        primary: '#6200EE',
        'primary-darken-1': '#3700B3',
        secondary: '#03DAC6',
        'secondary-darken-1': '#018786',
        error: '#B00020',
        info: '#2196F3',
        success: '#4CAF50',
        warning: '#FB8C00',
    },
};
const customTheme = {
    dark: false,
    colors: {
        background: '#34A853',
        surface: '#FF0101',
        primary: '#FF0101',
        'primary-darken-1': '#FF0101',
        secondary: '#03DAC6',
        'secondary-darken-1': '#018786',
        error: '#B00020',
        info: '#2196F3',
        success: '#4CAF50',
        warning: '#FF0101',
    },
};
export default createVuetify(
  // https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides
    {
        theme: {
            defaultTheme: 'light',
            themes: {
                customDarkTheme,
                customLightTheme,
                customTheme,
            }
        }
    }
)

使用App.vue页面,引入useTheme() 全局改变主题色。


<template>
  <v-app >
    <v-main>
<!--      <v-btn @click="toggleTheme">点击切换主题</v-btn>-->
      <v-btn @click="setTheme(0)">light</v-btn>
      <v-btn @click="setTheme(1)">dark</v-btn>
      <v-btn @click="setTheme(2)">customTheme</v-btn>
      <v-btn @click="setTheme(3)">customLightTheme</v-btn>
      <v-btn @click="setTheme(4)">customDarkTheme</v-btn>
       <v-card theme="light">测试测试...</v-card>
      <v-theme-provider theme="customLightTheme">
        <v-card>测试测试...</v-card>
      </v-theme-provider>
      <HelloWorld/>
    </v-main>
  </v-app>
</template>
<script setup lang="ts">
import {ref} from 'vue'
import HelloWorld from './components/HelloWorld.vue'
import {useTheme} from "vuetify";
//使用useTheme() 获取主题,useTheme()是由Vuetify提供的
const theme = useTheme();
//包含Vuetify默认的浅色和深色主题以及我们自定义的主题
const myThemes = ["light","dark","customTheme","customLightTheme","customDarkTheme"]
const setTheme = (index:number) => {
  //全局修改主题theme
  theme.global.name.value = myThemes[index]
}
// const toggleTheme = () => {
//   console.log('111111',theme.value)
//   theme.value = theme.value === 'light' ? 'dark' : 'light'
// }
</script>

可以通过设置theme属性来定义主题颜色,也可以用使用v-theme-provider来定义主题色


相关文章
|
5天前
|
JavaScript 前端开发
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
本文介绍了在Vue2或Vue3项目中如何使用Isotope(同位素)布局库来创建动态的网格布局,并提供了详细的代码实现和效果展示,包括过滤和排序功能。
13 0
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
|
4天前
|
JavaScript
在Vue中使用Avue、配置过程以及实际应用
这篇文章介绍了作者在Vue项目中集成Avue组件库的完整过程,包括安装、配置和实际应用,展示了如何利用Avue实现动态表单和数据展示的功能。
在Vue中使用Avue、配置过程以及实际应用
|
5天前
|
前端开发 JavaScript API
基于Vue3+Hooks实现4位随机数和60秒倒计时
本文介绍了如何在Vue3中使用Hooks API来实现生成4位随机数和执行60秒倒计时的功能,并提供了详细的代码示例和运行效果展示。
23 1
基于Vue3+Hooks实现4位随机数和60秒倒计时
|
5天前
|
数据可视化 JavaScript
Vue3项目使用G6可视化组件实现一个树形机构图
在Vue 3项目中使用G6可视化组件库实现树形机构图的构建和展示。
38 1
Vue3项目使用G6可视化组件实现一个树形机构图
|
1天前
|
JSON JavaScript 前端开发
Vue3在工作中使用的一些经验总结
这篇文章是关于Vue 3项目中使用TypeScript的一些经验总结,包括如何配置TSLint进行代码规范和类型检查,以及如何将现有的JavaScript代码迁移到TypeScript的步骤和注意事项。
Vue3在工作中使用的一些经验总结
|
4天前
|
JavaScript 算法 API
Vue 3有哪些新特性
【8月更文挑战第16天】Vue 3有哪些新特性
25 1
|
5天前
|
JavaScript
基于Vue3实现简约型侧边栏
本文介绍了如何在Vue3项目中实现一个简约型侧边栏导航,包括配置路由、页面布局和导航交互,以及如何通过Vue Router和条件渲染实现动态内容展示。
32 1
|
5天前
|
JavaScript UED
如何在Vue3项目中使用防抖节流技巧
在Vue 3项目中使用防抖和节流技巧以优化组件性能,包括使用`lodash`库和自定义实现这两种方法。
10 0
如何在Vue3项目中使用防抖节流技巧
|
5天前
|
前端开发 JavaScript
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
本文介绍了如何在Vue3项目中实现一个鼠标拖动调整元素宽度的功能,并展示了点击按钮收起或展开侧边栏的效果,提供了完整的实现代码和操作演示。
59 0
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
|
5天前
在 Vue3 + ElementPlus 项目中使用 el-autocomplete 控件
本文介绍了在Vue3 + ElementPlus项目中如何使用`el-autocomplete`控件实现自动补全输入功能,并探讨了不同版本ElementPlus中`clearable`属性的兼容性问题。
25 0
在 Vue3 + ElementPlus 项目中使用 el-autocomplete 控件