Vue 实现主题切换(明暗)

news/2025/2/22 23:10:20/

项目地址:https://gitee.com/abcdfdewrw/vue3_xiaohongshu_project

效果展示:
在这里插入图片描述

步骤1:定义明暗scss样式

javascript">// 浅色模式
html[data-theme="light"]:root {--header-height: 72px;--color-border-bottom: #eef2f9;--color-primary-label: #333;--color-secondary-label: rgba(51, 51, 51, 0.8);--color-tertiary-label: rgba(51, 51, 51, 0.6);--color-quaternary-label: rgba(51, 51, 51, 0.3);--color-link: #13386c;--color-inverted-label: #fff;--color-background: #fff;--color-active-background: rgba(0, 0, 0, 0.03);--color-border: rgba(0, 0, 0, 0.08);--color-shadow-border: rgba(0, 0, 0, 0.02);--elevation-low-background: #fff;--elevation-high-background: #fff;--elevation-note-background: #fff;--elevation-low-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.04),0 1px 2px 0 rgba(0, 0, 0, 0.02);--elevation-high-shadow: 0 4px 32px 0 rgba(0, 0, 0, 0.08),0 1px 4px 0 rgba(0, 0, 0, 0.04);--elevation-note-shadow: 0 8px 64px 0 rgba(0, 0, 0, 0.04),0 1px 4px 0 rgba(0, 0, 0, 0.02);--elevation-low-shadow-filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.04))drop-shadow(0 1px 2px rgba(0, 0, 0, 0.02));--elevation-high-shadow-filter: drop-shadow(0 4px 32px rgba(0, 0, 0, 0.08))drop-shadow(0 1px 4px rgba(0, 0, 0, 0.04));--material-filter: saturate(150%) blur(10px);--material-background: rgba(64, 64, 64, 0.25);--material-inverted-background: rgba(51, 51, 51, 0.9);--mask-backdrop: rgba(0, 0, 0, 0.25);--mask-note-card: rgba(0, 0, 0, 0.25);--mask-paper: rgba(255, 255, 255, 0.98);--color-white: #fff;--color-red: #ff2442;--color-tinted-red: rgba(255, 36, 66, 0.06);--color-blue: #3d8af5;--color-tinted-blue: rgba(61, 138, 245, 0.1);--mask-video-player-mask: linear-gradient(180deg,rgba(0, 0, 0, 0.25) 0%,rgba(0, 0, 0, 0) 24.48%,rgba(0, 0, 0, 0) 50%,rgba(0, 0, 0, 0.75) 100%);--search-hotspot-hint: linear-gradient(90deg, #ff2543 0%, #ff5225 100%);--color-vertical-channel: #fff9d5;
}// 深色模式
html[data-theme="dark"]:root {--header-height: 72px;--color-primary-label: #fff;--color-secondary-label: rgba(255, 255, 255, 0.8);--color-tertiary-label: rgba(255, 255, 255, 0.6);--color-quaternary-label: rgba(255, 255, 255, 0.3);--color-link: #c7daef;--color-inverted-label: #0a0a0a;--color-background: #0a0a0a;--color-active-background: rgba(255, 255, 255, 0.04);--color-border: rgba(255, 255, 255, 0.08);--color-shadow-border: rgba(255, 255, 255, 0.02);--elevation-low-background: #121212;--elevation-high-background: #181818;--elevation-note-background: #121212;--elevation-low-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.04),0 1px 2px 0 rgba(0, 0, 0, 0.02), 0 0 0 1px rgba(255, 255, 255, 0.04) inset;--elevation-high-shadow: 0 4px 32px 0 rgba(0, 0, 0, 0.08),0 1px 4px 0 rgba(0, 0, 0, 0.04), 0 0 0 1px rgba(255, 255, 255, 0.06) inset;--elevation-note-shadow: 0 8px 64px 0 rgba(0, 0, 0, 0.04),0 1px 4px 0 rgba(0, 0, 0, 0.02);--elevation-low-shadow-filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.04))drop-shadow(0 1px 2px rgba(0, 0, 0, 0.02))drop-shadow(0 0 1px rgba(255, 255, 255, 0.04));--elevation-high-shadow-filter: drop-shadow(0 4px 32px rgba(0, 0, 0, 0.08))drop-shadow(0 1px 4px rgba(0, 0, 0, 0.04))drop-shadow(0 0 1px rgba(255, 255, 255, 0.06));--material-filter: saturate(150%) blur(10px);--material-background: rgba(64, 64, 64, 0.25);--material-inverted-background: rgba(255, 255, 255, 0.9);--mask-backdrop: rgba(0, 0, 0, 0.5);--mask-note-card: rgba(0, 0, 0, 0.25);--mask-paper: rgba(10, 10, 10, 0.98);--color-white: #fff;--color-red: #ff2e4d;--color-tinted-red: rgba(255, 46, 77, 0.06);--color-blue: #3d8af5;--color-tinted-blue: rgba(61, 138, 245, 0.1);--mask-video-player-mask: linear-gradient(180deg,rgba(0, 0, 0, 0.25) 0%,rgba(0, 0, 0, 0) 24.48%,rgba(0, 0, 0, 0) 50%,rgba(0, 0, 0, 0.75) 100%);--search-hotspot-hint: linear-gradient(90deg, #ff2543 0%, #ff5225 100%);--color-vertical-channel: #181714;
}

所有页面就需要使用你定义的这些scss变量
在这里插入图片描述

步骤2:切换主题调用方法

javascript">// 主要代码
export const useTheme = (model = "light") => {window.document.documentElement.setAttribute("data-theme", model);
};

http://www.ppmy.cn/news/1572778.html

相关文章

登录弹窗效果

1,要求 点击登录按钮,弹出登录窗口 提示1:登录窗口 display:none 隐藏状态; 提示2:登录按钮点击后,触发事件,修改 display:block 显示状态 提示3:登录窗口中点击关闭按钮&#xff0…

[免费]Springboot+Vue医疗(医院)挂号管理系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringbootVue医疗(医院)挂号管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue医疗(医院)挂号管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 在如今社会上,关于信息上…

Python 自然语言处理(NLP)和文本挖掘的常规操作过程

Python 自然语言处理(NLP)和文本挖掘 自然语言处理(NLP)和文本挖掘是数据科学中的重要领域,涉及对文本数据的分析和处理。Python 提供了丰富的库和工具,用于执行各种 NLP 和文本挖掘任务。以下是一些常见的…

详解Redis数据结构(附源码)

引言 只有弄明白Redis数据结构,才能理解它如此快速的原因,并不只是它存储于内存,本篇文章将拆开Redis数据结构分析它高效的原因 字符串(String) 基本概念:字符串是 Redis 中最基本的数据结构,…

Qt天气预报项目

目录 一、整体效果 二、功能介绍 三、布局 1.基本布局 2.样式表 3.重写鼠标事件 四、数据获取与解析 1.发送http请求 2.解析json数据 3.不同城市切换 五、绘制温度折线图 一、整体效果 源码: Gabriel-gxb/Qt_weatherForecast: qt6实现天气预报 二、功能介绍 主要功…

C语言-------结构体(1)

数据类型 (1)基本数据类型 整型 浮点型 字符型 (2)构造类型 数组 结构体 结构体: 用来处理,现实生活中,更复杂的数据的描述 用来 描述复杂数据的 一种用户自定义的数…

【vscode】VScode Remote SSH配置

VScode使用remote ssh 到服务器上的Docker容器中 1. 配置远程服务器docker容器的端口映射,例如将服务器的2222端口映射到container的22端口(默认) 1.1 在容器系统的sshd_config文件中配置参数 #配置文件 vim /etc/ssh/sshd_config #打开端口号 Port 221.2 建立容…

上下文编辑器在不同场景下的功能(含使用案例)

上下文编辑器(Context Editor)解释 上下文编辑器(Context Editor)通常指的是一种能够修改、优化或过滤上下文信息的工具或方法,以增强下游任务的表现,特别是在 检索增强生成(RAG)、问…