主题色变量和var实现多套主题换肤

news2024/9/26 5:21:53

文章目录

  • 一、前言
    • 1.1、[`Vue+ElementUI`实现多套主题换肤](https://blog.csdn.net/u012804440/article/details/133975511)
    • 1.2、[`Vue+ElementUI`实现在线动态换肤](https://blog.csdn.net/u012804440/article/details/133975570)
  • 二、实现
    • 2.1、多主题色定义
    • 2.2、根节点属性修改
      • 2.2.1、默认主题
      • 2.2.2、带参主题 `myTheme02`
    • 2.3、效果
    • 2.4、源码
  • 三、最后

一、前言

前端换肤有2种,一种是定义好多套主题的换肤,另一种是随意配置主题色换肤。而且很多是使用UI库提供的变色方案,本片文章是纯主题色变量和var一起使用实现换肤效果。以下2种换肤方案有兴趣业务适配的可以点击标题了解下:

1.1、Vue+ElementUI实现多套主题换肤

1.2、Vue+ElementUI实现在线动态换肤

二、实现

2.1、多主题色定义

  • 定义根伪类 :root,代码第 27 行。分别定义了默认和带参数的伪类;
  • 定义 CSS 变量,变量名需要以两个减号(--)开始;
  • 多主题的话就添加多个带参数的伪类,例如my-theme=myTheme02my-theme=myTheme03等等;
/* 默认 */
:root {
    --box-bg-01: yellow;
    --box-bg-02: blue;
}
/* 带参数 myTheme02 */
:root[my-theme=myTheme02] {
    --box-bg-01: red;
    --box-bg-02: green;
}

2.2、根节点属性修改

设置根节点html属性my-theme

const type = document.documentElement.getAttribute('my-theme')==='myTheme02' ? '' : 'myTheme02';
document.documentElement.setAttribute('my-theme', type);

2.2.1、默认主题

可看到下图右侧 html 标签上无其它属性

2.2.2、带参主题 myTheme02

可看到下图右侧 html 标签上有属性my-theme

2.3、效果

2.4、源码

<template>
  <div>
    <div><el-button @click="changeTheme">主题切换</el-button></div>
    <div class="box box01"></div>
    <div class="box box02"></div>
  </div>
</template>
<script>
export default {
  methods: {
    changeTheme() {
      const theme = document.documentElement.getAttribute('my-theme')
      const type = theme ==='myTheme02' ? '' : 'myTheme02';
      document.documentElement.setAttribute('my-theme', type);
    }
  }
}
</script>
<style>
/* 默认 */
:root {
  --box-bg-01: yellow;
  --box-bg-02: blue;
}
/* 带参数的 */
:root[my-theme=myTheme02] {
  --box-bg-01: red;
  --box-bg-02: green;
}
.box {
  display: inline-block;
  width: 100px;
  height: 100px;
}
.box01 {
  background: var(--box-bg-01);
}
.box02 {
  background: var(--box-bg-02);
}
</style>

三、最后

本人每篇文章都是一字一句码出来,希望大佬们多提提意见。顺手来个三连击,点赞👍收藏💖关注✨。创作不易,给我打打气,加加油☕

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

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

相关文章

UVM验证环境中加入monitor

验证平台必须监测DUT的行为&#xff0c;只有知道DUT的输入输出信号变化之后&#xff0c;才能根据这些信号变化来判定DUT的行为是否正 确。 验证平台中实现监测DUT行为的组件是monitor。 driver负责把transaction级别的数据转变成DUT的端口级别&#xff0c;并驱动给DUT&…

EM32DX-C4【C#】

1外观&#xff1a; J301 直流 24V 电源输入 CAN0 CAN0 总线接口 CAN1 CAN1 总线接口 J201 IO 接线段子 S301-1、S301-2 输出口初始电平拨码设置 S301-3~S301-6 模块 CAN ID 站号拨码开关 S301-7 模块波特率拨码设置 S301-8 终端电阻选择开关 2DI&#xff1a; 公共端是…

Powercli常用命令

背景 vcenter web界面不如命令行快&#xff0c;且不能批量操作。 根据实际需求逐步补充使用到的powercli 命令。 00 通过bat脚本配置terminal标签页 在WindowsTerminal上配置新的标签页&#xff0c;实现打开标签页即默认连接vcenter。 脚本内容如下&#xff1a; echo off p…

Hadoop实验putty文件

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 很多朋友反馈做hadoop实验中的putty找不到Connection-SSH-Auth路径下找不到Private key for authentication私有密钥&#xff0c;无法将转…

vue: 线上项目element-ui的icon偶尔乱码问题

线上环境偶尔会复现&#xff0c; 具体&#xff1a; 一般使用不会出现这个问题&#xff0c;因为一般引入的是element-ui的css文件&#xff0c;问题出在于为了主题色变化啊&#xff0c;需要用到scss变量引入了scss文件。 import “~element-ui/packages/theme-chalk/src/index”…

IDEA插件:Apipost-Helper

Apipost-Helper是由Apipost推出的IDEA插件&#xff0c;写完接口可以进行快速调试&#xff0c;且支持搜索接口、根据method跳转接口&#xff0c;还支持生成标准的API文档&#xff0c;注意&#xff1a;这些操作都可以在代码编辑器内独立完成&#xff0c;非常好用&#xff01;这里…

solidity实现ERC1155多代币标准

文章目录 1、NFT - 维基百科2、IERC1155MetadataURI3、IERC1155Receiver4、IERC11555、ERC11556、NFT11557、开源地址 1、NFT - 维基百科 ERC-1155 标准于2018年6月由Witek Radomski、Andrew Cooke、Philippe Castonguay、James Therien、Eric Binet及Ronan Sandford提出。此标…

RK3568平台开发系列讲解(Linux系统篇)device_node 转换成 platform_device

🚀返回专栏总目录 文章目录 一、DTB转换规则二、转换源码分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过设备树 device_node 转换成 platform_device 一、DTB转换规则 device 部分是用 platform_device 结构体来描述硬件资源的, 所以内核最终会将…

LeetCode(47)合并区间【区间】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 合并区间 1.题目 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中…

VMware安装Ubuntu系统(Server端,Desktop端步骤一样)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【C++】开源:Boost进程间通信库InterProcess配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Boost进程间通信库InterProcess配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一…

IntelliJ IDEA图形安装教程

IntelliJ IDEA图形安装教程 之前开始Java程序&#xff0c;一直用的eclipse&#xff0c;觉得还可以。一直听说IntelliJ IDEA比eclipse好用很多&#xff0c;但因为比较懒&#xff0c;也没有学习使用。机缘巧合下&#xff0c;尝试用了下&#xff0c;顿时有种相见恨晚的感觉&#…

翻译: 生成式人工智能的工作原理How Generative AI works

ChatGPT 和 Bard 等系统生成文本的能力几乎像魔法一样。它们确实代表了 AI 技术的一大步进。但是文本生成到底是如何工作的呢&#xff1f;在这个视频中&#xff0c;我们将看看生成式 AI 技术的底层原理&#xff0c;这将帮助你理解你可以如何使用它&#xff0c;以及何时可能不想…

掌控安全 -- POST 注入

POST注入第一题 既然是POST注入&#xff0c;那么再用GET传参的方式就不能用了 万能密码登录一下试试 这里显示成功登录&#xff0c;然后就可以知道登录框这里存在注入&#xff0c;也就是可以构造sql语句进行注入&#xff0c;然后就是正常的注入手法了。 or 11 order by 1# 这…

【算法专题】前缀和

前缀和 前缀和1. 前缀和【模板】2. 二维前缀和【模板】3. 寻找数组的中心下标4. 除自身以外数组的乘积5. 和为K的子数组6. 和可被K整除的子数组7. 连续数组8. 矩阵区域和 前缀和 1. 前缀和【模板】 题目链接 -> Nowcoder -DP34.前缀和【模板】 Nowcoder -DP34.前缀和【模…

【Vulnhub 靶场】【Prime (2021): 2】【简单 - 中等】【20210509】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/prime-2021-2,696/ 靶场下载&#xff1a;https://download.vulnhub.com/prime-2021/Prime-2.ova 靶场难度&#xff1a;简单 - 中等 发布日期&#xff1a;2021年5月9日 文件大小&#xff1a;3.7 GB 靶场作者&am…

菜鸟学习日记(python)——运算符

我们进行运算时&#xff0c;需要两类数据&#xff0c;操作数和运算符&#xff0c;例如&#xff1a;ab就是一个运算&#xff0c;它的操作数是a和b&#xff0c;运算符是‘’ 在python中运算符包括以下几大类&#xff1a; 算数运算符比较&#xff08;关系&#xff09;运算符赋值…

图像万物分割——Segment Anything算法解析与模型推理

一、概述 在视觉任务中&#xff0c;图像分割任务是一个很广泛的领域&#xff0c;应用于交互式分割&#xff0c;边缘检测&#xff0c;超像素化&#xff0c;感兴趣目标生成&#xff0c;前景分割&#xff0c;语义分割&#xff0c;实例分割&#xff0c;泛视分割等。 交互式分割&am…

二、DVP摄像头调试笔记(dvp外设驱动篇、寄存器篇)

问题描述点 &#xff08; 存在MCK&#xff0c;I2C数据都正常发送情况排查&#xff09; 一、首先排查行同步信号和场同步信号是否与芯片的有效电平是否一致 1、确认当前camera寄存器的VSYNC寄存器设置是高有效还是低有效 2、确认当前camear寄存器的HSYNC寄存器设置是高有效还是…

12.4_黑马MybatisPlus笔记(下)

目录 11 12 thinking&#xff1a;关于Mybatis Plus中BaseMapper和IService&#xff1f; 13 ​编辑 thinking&#xff1a;CollUtil.isNotEmpty? 14 thinking&#xff1a;Collection、Collections、Collector、Collectors&#xff1f; thinking&#xff1a;groupBy&#…