VUE3 换肤/根据主题动态切换图片

1.建立相关主题的less文件\src\assets\style\theme\theme.less

:root[theme='light'] {
--text_primary_color: rgba(34, 34, 48, 1);
--background_primary_color: rgba(255, 255, 255, 1);
...
}:root[theme='dark'] {
--text_primary_color: rgba(245, 245, 245, 1);
--background_primary_color: rgba(36, 36, 36, 1);
...
}

根据主题建立引入图片

\src\assets\image\dark\
\src\assets\image\light\

2.建立管理主题的js文件 store.js

import { reactive } from 'vue'export const ThemeStore = reactive({  //使ThemeStore具有响应式,只要theme改变,在组件中使用的ThemeStore就会实时更新,引发页面渲染theme: '',changeTheme(type) {this.theme = type;document.documentElement.setAttribute('theme', type);localStorage.setItem("Mode", type);   //保存主题到localStorage,保证下次打开还是上次的操作},getTheme() {return this.theme;},initTheme() {const mode = localStorage.getItem('Mode');  //从localStorage获取缓存的主题if (mode) {this.theme = mode;document.documentElement.setAttribute('theme', mode);} else {this.theme = 'light';document.documentElement.setAttribute('theme', 'light');}},getMoreImage() {return require(`@/assets/common/` + this.getTheme() + `/more.svg`)  //根据主题获取相应图片},});

3.使用:
初始化主题main.js

import { ThemeStore } from '@/assets/themeStore'
const app = createApp(App)
...
ThemeStore.initTheme()  //初始化

组件中切换主题

import { ThemeStore } from '@/assets/themeStore'
..
ThemeStore.changeTheme('light');
//ThemeStore.changeTheme('dark');

图片引用

import { ThemeStore } from '@/assets/themeStore'<img :src="ThemeStore.getMoreImage()" />

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/765899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】猛猛干7道链表OJ

前言知识点 链表的调试技巧 int main() {struct ListNode* n1(struct ListNode*)malloc(sizeof(struct ListNode));assert(n1);struct ListNode* n2(struct ListNode*)malloc(sizeof(struct ListNode));assert(n2);struct ListNode* n3(struct ListNode*)malloc(sizeof(struc…

从零开始学习在VUE3中使用canvas(六):lineCap(线条端点样式)

一、简介 lineCap能够让我们设置线条的端点样式&#xff0c;例如 1. butt const ctx canvas.getContext("2d");ctx.lineCap "butt"; // 默认样式&#xff0c;也可以显式指定 2.round const ctx canvas.getContext("2d");//圆头ctx.lineCap …

阿里云服务器“镜像”操作系统选择方法(超详细)

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

探索MySQL中的SQL_MODE数据模式

在MySQL中&#xff0c;SQL_MODE是一个用于控制数据库服务器行为的配置选项。它定义了MySQL在执行查询时应该遵循的规则和限制。通过设置不同的SQL_MODE值&#xff0c;我们可以改变MySQL的行为&#xff0c;以满足不同的需求。本文将对MySQL中的SQL_MODE进行详细解析&#xff0c;…

pyecharts 模块(创建简单的折线图和柱状图)

1.pyecharts 是个数据可视化&#xff0c;产生图标; 2.构建一个基础的折线图&#xff1a; from pyecharts.charts import Line lineLine() # 创建一个折线图对象 line.add_xaxis(["数据库","计算机组成原理","算法设计"]) # 给折线图对象添加x轴…

MATLAB:函数与数值积分

一、数学函数图像的绘制 clc,clear fh (x)2*exp(-x).*sin(x); Xrange [0,8]; gx (x)3*exp(-x)*0.8.*sin(x); fplot(fh,Xrange,r-*,LineWidth,1.5) hold on grid on fplot(gx,Xrange,b-o,LineWidth,1.5) axis([-0.5,8.5,-0.1,0.85]) legend(fh (x)2*exp(-x).*sin(x),gx (x…

有了 unique_ptr 和 shared_ptr,要weak_ptr 有什么用?【C++】

有了 unique_ptr 和 shared_ptr&#xff0c;要weak_ptr 有什么用&#xff1f; 说明使用场景防止循环引用临时访问共享资源 说明 weak_ptr是C中智能指针的一种&#xff0c;与shared_ptr配合使用&#xff0c;weak_ptr不对对象的生命周期进行管理&#xff0c;即它持有对象的引用…

Docker之docker compose!!!!

一、概述 是 Docker 官方提供的一款开源工具&#xff0c;主要用于简化在单个主机上定义和运行多容器 Docker 应用的过程。它的核心作用是容器编排&#xff0c;使得开发者能够在一个统一的环境中以声明式的方式管理多容器应用的服务及其依赖关系。 也就是说Docker Compose是一个…

高并发抢票时,防止机器人刷票的令牌大闸,减轻服务器的压力(防刷+限流)

1. 为什么要引入令牌大闸&#xff1f; 场景1&#xff1a;分布式锁和限流都不能解决机器人刷票的问题&#xff0c;1000个请求抢票&#xff0c;900个限流快速失败&#xff0c;另外100个有可能是同一个在刷库。 引入令牌&#xff0c;令牌中记录用户信息&#xff0c;会进行校验用户…

基于ssm的农家乐管理系统+数据库+论文+免费远程调试

开发环境 项目编号:JavaMySQL ssm231农家乐管理系统-民宿-餐饮-房间预定-vue 开发语言&#xff1a;Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:ssmvue 项目介绍: ssm的农家乐管理系统。Javaee项目。采用M&#xff08;model&#xff09;V…

[思考记录]技术欠账

最近对某开发项目做回顾梳理&#xff0c;除了进一步思考整理相关概念和问题外&#xff0c;一个重要的任务就是清理“技术欠账”。 这个“技术欠账”是指在这个项目的初期&#xff0c;会有意无意偏向快速实现&#xff0c;想先做出来、用起来&#xff0c;进而在实现过程中做出…

jenkins构建完成后部署到本机,无法读取容器外文件夹

项目背景&#xff1a; Dockerjenkins 构建完成后&#xff0c;要把打包的dist文件夹内容移动到网站目录 /www/wwwroot/xxxxxx 文件夹下&#xff1b;但是获取不到jenkins容器外的文件夹。 解决办法&#xff1a; 在容器中&#xff0c;添加挂载/映射本机目录&#xff0c;把网站…

C++简单实现哈希查找

C 简单实现哈希查找 1. 哈希冲突 哈希表中可能会出现哈希冲突&#xff0c;即多个数据项映射到相同的桶。 常见的冲突解决方法包括链地址法&#xff08;Chaining&#xff09;和线性探测法&#xff08;Linear Probing&#xff09;。 使用链地址法时&#xff0c;每个桶维护一个链…

Oracle里表、索引、列的统计信息

目录 一、表的统计信息 二、索引的统计信息 1、层级&#xff08;level&#xff09; 2、聚簇因子的含义及重要性 3、列的统计信息 3.1直方图&#xff08;histogram&#xff09; 1&#xff09;直方图含义 2&#xff09;直方图类型 一、表的统计信息 表的统计信息用于描述表…

【保姆级教程】YOLOv8目标检测:训练自己的数据集

一、YOLOV8环境准备 1.1 下载安装最新的YOLOv8代码 仓库地址&#xff1a; https://github.com/ultralytics/ultralytics1.2 配置环境 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple二、数据准备 2.1 安装labelme标注软件 pip install label…

React系列 之 React进阶 含源码解读 (一)事件合成、state原理

资料来源&#xff1a;掘金课程 https://juejin.cn/book/6945998773818490884?enter_fromcourse_center&utm_sourcecourse_center 记录一些笔记 事件合成 React的事件其实是React重新实现的一套事件系统。目标是统一管理事件&#xff0c;提供一种跨浏览器一致性的事件处…

langchain4j DefaultAiServices源码解析

版本 0.28.0 源码 使用langchain4j&#xff0c;可以通过AiServices来封装聊天模型API&#xff0c;实现会话记忆&#xff0c;工具调用&#xff0c;搜索增强&#xff0c;内容审查等功能&#xff0c;并提供简单灵活的用户接口 DefaultAiServices是其默认实现类型&#xff0c;通…

5G智能网关助力工业铸造设备监测升级

随着物联网技术的迅猛发展和工业4.0浪潮的推进&#xff0c;传统工业正面临着严峻的转型升级压力。在这一背景下&#xff0c;铸造行业——这一典型的传统重工业领域&#xff0c;也必须积极探索借助5G、物联网、边缘计算等技术提升生产经营效率的新路径。 本文就基于佰马合作伙伴…

【技巧】ChatGPT Prompt 提示语大全

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 主要来自&#xff1a;https://github.com/f/awesome-chatgpt-prompts ChatGPT SEO提示 Contributed by: StoryChief AI Reference: 7 Powerful ChatGPT Prompts to Create SEO Content Faster 供稿人&#xff1a;…

MyBatis Plus笔记

1、删除 物理删除&#xff1a;从硬盘上直接删除掉 。好处&#xff1a;数据条数少了&#xff0c;不好的地方在于可能会影响到基于这条数据产生的记录 逻辑删除&#xff1a;假删除 两个区别&#xff1a; 删除时 之前&#xff1a;DELETE from sys_user …