当前位置:首页 > VUE

vue主题切换实现

2026-02-19 09:56:17VUE

实现 Vue 主题切换的方法

使用 CSS 变量动态切换主题

定义全局 CSS 变量,通过修改变量值实现主题切换。在根元素(如 :root)中定义主题相关变量:

:root {
  --primary-color: #42b983;
  --bg-color: #ffffff;
  --text-color: #333;
}

.dark-theme {
  --primary-color: #646cff;
  --bg-color: #242424;
  --text-color: rgba(255, 255, 255, 0.87);
}

在 Vue 组件中通过 document.documentElement.classList 切换主题类:

vue主题切换实现

const toggleTheme = () => {
  document.documentElement.classList.toggle('dark-theme');
};

使用 Vuex/Pinia 管理主题状态

通过状态管理工具存储当前主题,结合计算属性动态应用样式:

// Pinia 示例
import { defineStore } from 'pinia';

export const useThemeStore = defineStore('theme', {
  state: () => ({
    isDark: false
  }),
  actions: {
    toggleTheme() {
      this.isDark = !this.isDark;
      document.documentElement.classList.toggle('dark-theme', this.isDark);
    }
  }
});

结合 Tailwind CSS 实现

配置 tailwind.config.js 启用暗色模式:

vue主题切换实现

module.exports = {
  darkMode: 'class',
  // ...
}

在模板中通过类名切换:

<button @click="toggleTheme">切换主题</button>
<div :class="{ 'dark': isDark }">
  <!-- 内容 -->
</div>

持久化主题选择

使用 localStorage 保存用户选择,避免刷新后重置:

const saveThemePreference = (isDark) => {
  localStorage.setItem('theme', isDark ? 'dark' : 'light');
};

const loadThemePreference = () => {
  return localStorage.getItem('theme') === 'dark';
};

完整组件示例

<template>
  <button @click="toggleTheme">
    {{ isDark ? '浅色模式' : '深色模式' }}
  </button>
</template>

<script setup>
import { ref, onMounted } from 'vue';

const isDark = ref(false);

const toggleTheme = () => {
  isDark.value = !isDark.value;
  document.documentElement.classList.toggle('dark-theme', isDark.value);
  localStorage.setItem('theme', isDark.value ? 'dark' : 'light');
};

onMounted(() => {
  const savedTheme = localStorage.getItem('theme');
  if (savedTheme === 'dark') {
    isDark.value = true;
    document.documentElement.classList.add('dark-theme');
  }
});
</script>

标签: 主题vue
分享给朋友:

相关文章

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景。…

vue实现计算

vue实现计算

Vue 实现计算的方法 在 Vue 中实现计算功能可以通过多种方式完成,主要包括计算属性(computed)、方法(methods)和侦听器(watch)。以下是具体的实现方法: 计算属性(Comp…

vue 实现视频

vue 实现视频

Vue 实现视频播放功能 使用 Vue 实现视频播放功能可以通过 HTML5 的 <video> 标签或第三方库(如 video.js)来实现。以下是两种常见的方法: 使用 HTML5…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为 @…

vue如何实现

vue如何实现

Vue 实现方法 在 Vue 中实现功能通常涉及组件化开发、状态管理和响应式数据绑定。以下是几种常见的实现方式: 组件化开发 使用 Vue 的单文件组件(.vue 文件)结构,将 UI 拆分为可复用…

mui实现vue

mui实现vue

mui 实现 Vue 的步骤 mui 是一个轻量级的前端框架,常用于移动端开发。结合 Vue 可以实现高效的开发体验。以下是具体实现方法。 安装 mui 和 Vue 通过 npm 或 yarn 安装…