前端换肤,聊一聊主题切换那些事

article/2025/6/10 8:02:09

一些网站通常会提供白天、夜间模式,以及自定义主题等等,这种主题切换也就是本文说的前端换肤。
这次案例用的是白天和夜间模式的切换,在做换肤之前,得先知道一件事情:css的变量定义,对变量定义不熟悉的同学请看MDN文档:自定义属性(–*):CSS 变量

主题切换也就是样式的切换,白天和黑夜的模式切换需要准备两套样式,我们通过css的变量定义,全局访问这些公共变量就可以实现主题切换。
此处我已经准备好了样式:

/*style.css*/
/* 基本样式 */
:root {--theme-background: #ecf5ff; /*背景色*/--theme-menuBackground : #fff; /*菜单颜色*/--theme-menuIcon : #303133; /*菜单icon*/
}/* 黑夜模式 */
html[theme-colors='dark'] {--theme-background: #1b1b1b;  /*背景色*/--theme-menuBackground : #343434; /*菜单颜色*/--theme-menuIcon : #cdcdcd; /*菜单icon*/--theme-activeColor : #97a1fe;
}
/* 白天 */
html[theme-colors='white'] {--theme-background: #ecf5ff; /*背景色*/--theme-menuBackground : #fff; /*菜单颜色*/--theme-menuIcon : #303133; /*菜单icon*/--theme-activeColor : #97a1fe;
}

默认情况用:root定义的样式,黑夜模式用dark,白天用white

公共样变量定义后,我们就可以到页面使用了,例如设置卡片的背景色:

.card {background: var(--theme-background); 
}

此时访问的是:root中的默认变量,我们需要做到根据按钮切换,访问不同主题下的变量

<!-- 换肤 -->
<el-switchv-model="theme"inline-promptstyle="--el-switch-on-color: #13ce66; --el-switch-off-color: #97a0ff":active-icon="Sunny":inactive-icon="Moon"@change="themeChange"
/>
// 主题切换
const theme = ref<boolean>(true);
const themeChange = (val : boolean) => {// true白天 false夜晚if(val){document.querySelectorAll('html')[0].setAttribute('theme-colors','white')} else {document.querySelectorAll('html')[0].setAttribute('theme-colors','dark')}
}

setAttribute()设置指定元素上的某个属性值。如果属性已经存在,则更新该值;否则,使用指定的名称和值添加一个新的属性。如果要切换夜间模式,我们可以给html设置一个属性为theme-colors = dark,此时我们就可以访问html[theme-colors='dark']下的css变量了
,白天模式切换theme-colors = white即可。
在这里插入图片描述
在做项目之前我们可以考虑到这一点,否则后期页面都写好了再改会比较麻烦。如果用了前端框架的话,我们需要覆盖框架自带的样式,我们可以将覆盖的样式写成公共文件,全局引入或者在对应页面引入即可。


如果觉得这篇文章对你有帮助,欢迎点赞👍、收藏💖、转发✨哦~


http://chatgpt.dhexx.cn/article/nhsx6LoP.shtml

相关文章

android 皮肤,Android换肤

前言 之前做个APP需要用到换肤&#xff0c;在githup上面找了很久&#xff0c;终于找到一款功能强大、基本能够满足产品需求的换肤框架&#xff0c;那就是Android-skin-support&#xff0c;这个框架换肤功能很强大、不管是白天、黑夜还是任意颜色、图片的皮肤包都可以&#xff0…

Android 应用换肤方案的总结

虽然现在已经有很多不错的换肤方案&#xff0c;但是这些方案或多或少都存在自己的问题。在这篇文章中&#xff0c;我将对 Android 现有的一些动态换肤方案进行梳理&#xff0c;对其底层实现原理进行分析&#xff0c;然后对开发一个新的换肤方案的可能性进行总结。 1、通过自定…

Android 插件化换肤方案

效果 实现流程 实现LayoutInflater.Factory2这个接口&#xff0c;实现onCreateView方法(主要仿照系统原来LayoutInflater.createView()方法的实现)&#xff0c;此处可以拿到页面中所有的View&#xff0c;判断有没有需要换肤的View&#xff0c;并且保存下来&#xff1b;在Activ…

墨迹天气桌面挂件换肤分析

该篇文章需要准备如下工具&#xff1a; 1、墨迹皮肤文件&#xff0c;下载地址。 Andorid换肤在网上搜索出来的结果&#xff0c;大概有三种&#xff1a; 1、应用本身带有写好的布局 优点&#xff1a;开发难度低 缺点&#xff1a;灵活性低&#xff0c;用户不能自定义皮肤。 2、使…

前端换肤的一些思考

先看看大家怎么做的。下面是两篇别人写的文章&#xff0c;最后是我自己的方法。 第一篇&#xff1a;聊一聊前端换肤 之前在做网站换肤&#xff0c;所以想谈谈网站换肤的实现。网页换肤就是修改颜色值&#xff0c;因此重点就在于怎么来替换。 一般实现 如上图&#xff0c;我们…

Visio保存为网页出错

visio 试图保存文档时出错。已创建的页面可能无效。 试图保存文档时出错。以创建的页面可能无效。最近在用Visio作图的时候时长发生的问题。 经过摸索&#xff0c;不覆盖保存没有问题&#xff0c;如果覆盖保存&#xff0c;有时会有这个问题。解决办法就是把以前生成的网页和相关…

Visio 2016软件

Visio 2016是微软官方最新发布的一款领先的图表解决方案&#xff0c;它可以帮助企业制作定义流程、编辑最佳方案的同时还可以建立可视化计划变革的一款实用工具。这款软件目前提供了&#xff1a;上手图例&#xff08;starter diagrams&#xff09;、成百上千的智能形状、一步数…

解决visio和office365冲突,无法安装visio问题

本教程用于解决office365和visio冲突&#xff0c;无法安装visio问题 目前系统中已经安装Office365 尚未安装visio专业版本 1、下载office增强工具。 office增强工具下载地址 右键解压&#xff0c;此处要记得解压的目录&#xff08;建议在当前目录下&#xff09;。 根据自…

Visio软件

Visio使用小技巧 上标、下标快捷键 上标&#xff1a;CtrlShift“”下标&#xff1a;Ctrl“” 自定义图形旋转角度 当点击菜单栏上的视图——任务窗格——大小和位置选项&#xff0c;在页面编辑区的左下方出现一个大小和位置窗口。 大小和位置窗口如下&#xff1a; 自…

Visio文件编辑查看工具Visio Viewer for Mac

Visio Viewer for Mac可以打开和查看Visio文件&#xff08;.vsd、.vdx和.vsdm文件&#xff09;。它具有简单易用的用户界面&#xff0c;可以快速加载和显示Visio文件。此外&#xff0c;它还支持导出文件为PDF、PNG、JPEG等格式&#xff0c;方便用户进行文件转换和共享。 Visio…

与你一起学习Microsoft Visio——基础篇

Hi&#xff0c;你好&#xff01;我是大黄蜂&#xff0c;非常高兴借此机会与你一起学习MS Visio的相关知识和技能。这一次的分享主要是结合本人在实际使用Visio过程中的一些方法技巧并总结整理其他人分享的知识&#xff0c;其中有一些材料则来源于互联网&#xff0c;期待通过我的…

【Visio】 windows Visio 画图

1、Visio如何画圆形 画圆用 里面的第二个画圆工具 &#xff0c;用这个工具可以画出圆或者椭圆。如果想得到一个正圆&#xff0c;在画的时候按住shift键即可。 画好一个圆之后单击它&#xff0c;再单击 填充选项&#xff0c;选择你想填充的颜色&#xff0c;选黑色的话就会出现一…

visio2019 专业版,两种方法

安装好visio后&#xff0c;有两种方法jihuo&#xff1a;方法2中自带安装包&#xff0c;有需要可以下载 注意:visio版本要和电脑上带的其他office版本保持一致&#xff0c;否则会不兼容。 1.参考这篇文章&#xff0c;使用代码jihuo https://blog.csdn.net/qq_39400113/article…

Microsoft Visio-Microsoft Visio下载

Microsoft Visio 2013可以帮助你以更直观的方式创建图表的新功能。Microsoft Visio 2013提供共同编写功能&#xff0c;可使团队协作变得更加容易。你也可以通过Microsoft Visio 2013软件增强图表的动态性&#xff0c;方法是将形状链接到实时数据&#xff0c;然后使用 SharePoin…

网页草图利器:Visio Stencils for Information Architects

以前&#xff0c;一直为如何在正式编码开发前与用户确认一个需求而苦恼&#xff0c;因为在互联网企业做内部系统开发&#xff0c;开发周期实在太短&#xff0c;以至于几乎不太可能先给用户一个原型已确认前端UI的需求&#xff0c;因此多数情况下我们会选择画一个Web界面草图给用…

visio对象放入word显示不全_这个可以代替Visio的流程图绘制软件,你值得拥有,还有网页版的~...

一、开篇前言 大家好&#xff0c;大飞鸽就是我&#xff0c;我就是大飞鸽。 流程图大家都熟悉&#xff0c; 像化工专业工艺流程图、 实验方案技术路线图等等。 流程图的优势也显而易见&#xff0c; 不但可以帮助自己梳理思路&#xff0c; 而且也可以让读者一目了然。 常用的绘制…

用Python将音频内容转换为文本格式,方言可以吗?

当对一个或多个人的谈话进行记录时&#xff0c;采用一种高度准确和自动化的方式将口语提取为文本非常有用。转换成文字后&#xff0c;便可以将其用于进一步分析或用作其他功能。 在本教程中&#xff0c;我们将使用称为AssemblyAI&#xff08;https://www.assemblyai.com/&…

python批量转换音频格式,flac转mp3等

可以批量的将一种格式的音频文件转化成指定的格式&#xff0c; 如&#xff1a;mp3&#xff0c;wav , ogg ,flac 的格式之间可以相互转换&#xff0c; 转换后的文件名与原文件相同。 注意&#xff1a;运行代码除了需要安装库pydub之外&#xff0c;还需安装软件ffmpeg.exe&…

Python如何将仅包含音频内容的Mp4,提取并转换为Mp3

关于如何将Mp4转换为Mp3的文章很多&#xff0c;方案也都很有效。但是这其中的大部分方法&#xff0c;并不适用于该Mp4文件中仅包含音频内容的情况&#xff0c;比如&#xff1a;有人从YouTube&#xff0c;下载了仅包含音频内容的文件&#xff0c;这个文件其实还是Mp4格式的&…

PCM和WAV音频格式的区别,以及python自动转换

目录 WAV和PCM的简单介绍PCMWAV 关于音频的基础知识声道数channels采样位数bits采样频率sample_rate 进阶内容互相转换代码 WAV和PCM的简单介绍 PCM pcm&#xff1a;pulse code modulation&#xff0c;脉冲编码调制。将声音等模拟信号变成符号化的脉冲列&#xff0c;予以记录…