当前位置:首页 > VUE

vue暗黑模式实现

2026-03-29 14:16:46VUE

实现 Vue 暗黑模式的方法

使用 CSS 变量和类切换

通过 CSS 变量定义主题颜色,动态切换类名实现暗黑模式。在 App.vue 或根组件中添加类名切换逻辑:

// 在 Vue 组件中
data() {
  return {
    isDark: false
  }
},
methods: {
  toggleDarkMode() {
    this.isDark = !this.isDark;
    document.documentElement.classList.toggle('dark', this.isDark);
  }
}

CSS 定义变量和暗黑模式样式:

:root {
  --bg-color: #ffffff;
  --text-color: #333333;
}
.dark {
  --bg-color: #1a1a1a;
  --text-color: #f0f0f0;
}
body {
  background-color: var(--bg-color);
  color: var(--text-color);
}

结合 Vuex 或 Pinia 状态管理

若需全局状态管理,可使用 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', this.isDark);
    }
  }
});

使用第三方库

借助现成库如 vue-dark-mode@vueuse/coreuseDark 快速实现:

// 使用 @vueuse/core
import { useDark, useToggle } from '@vueuse/core';
const isDark = useDark();
const toggleDark = useToggle(isDark);

持久化存储

通过 localStorage 保存用户偏好,避免刷新后重置:

// 在状态管理或组件中
if (localStorage.getItem('darkMode') === 'true') {
  document.documentElement.classList.add('dark');
}
// 切换时同步更新
localStorage.setItem('darkMode', this.isDark.toString());

响应系统偏好

检测用户系统是否开启暗色模式,自动适配:

vue暗黑模式实现

const prefersDark = window.matchMedia('(prefers-color-scheme: dark)');
if (prefersDark.matches) {
  document.documentElement.classList.add('dark');
}
prefersDark.addEventListener('change', (e) => {
  document.documentElement.classList.toggle('dark', e.matches);
});

注意事项

  • 过渡动画:添加 CSS 过渡效果提升体验:
    * {
      transition: background-color 0.3s, color 0.3s;
    }
  • 图标适配:使用动态图标或 SVG 切换颜色。
  • 测试覆盖:确保暗黑模式下所有组件颜色对比度符合可访问性标准。

标签: 模式vue
分享给朋友:

相关文章

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…

vue实现钟表

vue实现钟表

使用 Vue 实现动态钟表 以下是一个基于 Vue 3 的动态钟表实现方案,包含时分秒指针和数字时间显示。 模板部分 <template> <div class="clock-…

vue实现xss

vue实现xss

XSS 攻击简介 XSS(跨站脚本攻击)是一种常见的安全漏洞,攻击者通过注入恶意脚本到网页中,当其他用户访问该页面时,脚本会在其浏览器中执行,可能导致数据泄露或会话劫持。 Vue 中的 XSS…

自实现vue

自实现vue

实现 Vue 的核心功能 要实现一个简化版的 Vue,需要理解其核心功能:数据响应式、模板编译、虚拟 DOM 和组件系统。以下是关键步骤的分解: 数据响应式 Vue 使用 Object.define…

vue指令实现

vue指令实现

Vue 指令的实现方式 Vue 指令是特殊的标记,用于在 DOM 元素上应用特定的行为。可以通过全局或局部方式注册自定义指令。 全局注册指令 在 Vue 应用中通过 Vue.directive 方法…

vue实现tip

vue实现tip

Vue实现Tooltip的方法 使用Vue实现Tooltip可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML的title属性 在Vue模板中直接使用HTML的title属性是最简单的实…