vue3+element Plus+ts 自定义主题色,以及生成主题色各种透明度

目录

思路 

安装css-color-function【接收一个颜色值,生成不同的透明度】

获取后台配置的主题色或者使用ColorPicker修改主题色

 最终结果如下


思路 

本篇文章的主体思路是从element Plus官网引申而来。结合了我以前用vue2+element-ui配置主题色生成透明度(light-1至linght-9)的方法。

安装css-color-function【接收一个颜色值,生成不同的透明度】

pnpm i css-color-function

utils/color.ts


import color from 'css-color-function'
const formula = {
    "dark-2": "color(primary shade(10%))",
    "light-1": "color(primary tint(10%))",
    "light-2": "color(primary tint(20%))",
    "light-3": "color(primary tint(30%))",
    "light-4": "color(primary tint(40%))",
    "light-5": "color(primary tint(50%))",
    "light-6": "color(primary tint(60%))",
    "light-7": "color(primary tint(70%))",
    "light-8": "color(primary tint(80%))",
    "light-9": "color(primary tint(90%))"
}
const generateColors = primary => {
    const colors = {}
    Object.keys(formula).forEach(key => {
      const value = formula[key].replace(/primary/g, primary)
      colors[key] = color.convert(value)
    })
    return colors
  }
  
  export default generateColors
  

tsconfig.json需要加入以下两个配置(因为css-color-function不是ts写的)

    "allowJs": true,
    "checkJs": false

获取后台配置的主题色或者使用ColorPicker修改主题色

 XXXX.vue

<script lang='ts' setup>
//更换主题色
import generateColors from '@/utils/color'
let themeColor = ref('#FF8040')//假装这个是从后台获取的主题色
function toggleTheme(){
  let colorMap:any = generateColors(themeColor.value)
  const el = document.documentElement
  el.style.setProperty('--el-color-primary',themeColor.value)

  //生成不同1-9的透明度
  Object.keys(colorMap).forEach(key => {
     el.style.setProperty(`--el-color-primary-${key}`, colorMap[key])
  })
    
}
</script>
<template>
    <el-color-picker v-model="themeColor" @change="toggleTheme" />
</template>

 最终结果如下

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络综合实训室解决方案2024

计算机网络综合实训室概述 数字化转型离不开计算机网络技术。因此培养能够对计算机整体系统进行设计、综合布线、网络设备安装、调式和维护的计算机人才是当今教育教学的热点&#xff0c;也是社会对计算机人才的要求。计算机网络技术是一个对于实践要求很高的科目&#xff0c;…

facebook群控如何做?静态住宅ip代理在多账号运营重的作用

在进行Facebook群控时&#xff0c;ip地址的管理是非常重要的&#xff0c;因为Facebook通常会检测ip地址的使用情况&#xff0c;如果发现有异常的使用行为&#xff0c;比如从同一个ip地址频繁进行登录、发布内容或者在短时间内进行大量的活动等等&#xff0c;就会视为垃圾邮件或…

嵌入式学习第十九天!(时间获取、文件属性和权限的获取、软链接和硬链接)

时间获取&#xff1a; 1. time time_t time(time_t *tloc); 功能&#xff1a;返回1970-01-01到现在的秒数&#xff08;格林威治时间&#xff09; 参数&#xff1a; tloc:存放秒数空间首地址 返回值: 成功返回秒数 失败返回-1 2. localtime struct tm *localtime(const tim…

比特币原生 L2 解决方案 Merlin Chain梅林链科普(bitget wallet)

什么是梅林链&#xff1f; Merlin Chain 是由 Bitmap Tech&#xff08;以前称为 Recursiverse&#xff09;背后的团队开发的比特币第 2 层解决方案。 Merlin Chain 专注于利用比特币的独特属性&#xff0c;旨在释放其未开发的潜力。从技术上来说&#xff0c;梅林链集成了零知识…

Docker Desktop 链接windos 安装的redis和mysql

1.1.先在容器安装项目 2.链接redis和mysql配置 redis和mysql是在windos安装的&#xff0c;使用的是小p管理器安装的 项目链接 DB_DRIVERmysql DB_HOSThost.docker.internal DB_PORT3306 DB_DATABASEyunxc_test DB_USERNAMEyunxc_test DB_PASSWORDtest123456... DB_CHARSETutf…

软件测试进阶自动化测试流程

如果想让测试在公司的项目中发挥出它最大的价值&#xff0c;并不是招两个测试技术高手&#xff0c;或引入几个测试技术&#xff0c;而是测试技术对项目流程的渗透&#xff0c;以及测试流程的改进与完善。虽然&#xff0c;当然测试行业前景乐观&#xff0c;许多中小企业也都在引…

如何在本地服务器部署TeslaMate并远程查看特斯拉汽车数据无需公网ip

文章目录 1. Docker部署TeslaMate2. 本地访问TeslaMate3. Linux安装Cpolar4. 配置TeslaMate公网地址5. 远程访问TeslaMate6. 固定TeslaMate公网地址7. 固定地址访问TeslaMate TeslaMate是一个开源软件&#xff0c;可以通过连接特斯拉账号&#xff0c;记录行驶历史&#xff0c;统…

【递归】:原理、应用与案例解析 ,助你深入理解递归核心思想

递归 1.基础简介 递归在计算机科学中&#xff0c;递归是一种解决计算问题的方法&#xff0c;其中解决方案取决于同一类问题的更小子集 例如 递归遍历环形链表 基本情况&#xff08;Base Case&#xff09;&#xff1a;基本情况是递归函数中最简单的情况&#xff0c;它们通常是递…

蓝桥杯Java组备赛(三)

题目1 不可能算到202320232023的阶乘 只需要算到39的阶乘就够了&#xff08;对阶乘的和S的末9位不再有影响&#xff09; 数字很大需要一边计算一边取模import java.util.Scanner;public class Main {public static void main(String[] args) {// Scanner sc new Scanner(Sys…

释放软件资产的无限潜力:如何通过有效的管理实现价值最大化!

随着数字化时代的加速发展&#xff0c;软件资产已成为企业最重要的资产之一。然而&#xff0c;许多企业并未意识到软件资产管理的重要性&#xff0c;导致软件资产的价值无法得到充分发挥。本文将探讨软件资产管理的重要性&#xff0c;以及如何通过有效的管理实现软件资产价值的…

【小呆的力学笔记】弹塑性力学的初步认知五:初始屈服条件(1)

文章目录 3. 初始屈服条件3.1 两个假设以及屈服条件基本形式3.2 π \pi π平面、Lode参数3.3 屈服曲线的一般特征 3. 初始屈服条件 3.1 两个假设以及屈服条件基本形式 在简单拉伸时&#xff0c;材料的屈服很明确&#xff0c;即 σ > σ s (1) \sigma\gt\sigma_s\tag{1} …

力扣55. 跳跃游戏(动态规划)

Problem: 55. 跳跃游戏 文章目录 题目描述思路复杂度Code 题目描述 思路 我们将问题稍做转换每次求取当前位置可以走到的最远位置&#xff0c;在此基础上我们将最终判断是否能走出整个nums&#xff1b;同时我们要判断中途会不会遇到某个位置是0使得不能继续走下去 复杂度 时间…

040 构造器详解

无参构造器 当一个类未定义任何构造器时&#xff0c;代码编译后会自动生成一个无参构造器&#xff0c;如果只需要无参构造器就可以直接省略定义。 public class Person {public Person(){}String name;int age; }public class Person {String name;int age; }有参构造器 有参…

Qt|大小端数据转换(补充)

Qt|大小端数据转换-CSDN博客 之前这篇文章大小端数据转换如果是小数就会有问题。 第一个方法&#xff1a; template <typename T> static QByteArray toData(const T &value, bool isLittle) {QByteArray data;for (int i 0; i < sizeof(T); i) {int bitOffset…

Appium+Python+pytest自动化测试框架

先简单介绍一下目录&#xff0c;再贴一些代码&#xff0c;代码里有注释 Basic目录下写的是一些公共的方法&#xff0c;Data目录下写的是测试数据&#xff0c;image存的是测试失败截图&#xff0c;Log日志文件&#xff0c;Page测试的定位元素&#xff0c;report测试报告&#x…

【JPCS出版|EI稳定检索】2024年第四届人工智能与工业技术应用国际学术会议(AIITA 2024)

2024年第四届人工智能与工业技术应用国际学术会议&#xff08;AIITA 2024&#xff09; 2024 4th International Conference on Artificial Intelligence and Industrial Technology Applications 2024年4月12日-14日 | 中国广州 大会官网&#xff1a;www.aiita.net 二轮截稿…

查看halcon算子的执行时间

点击这个时钟&#xff0c; 运行程序以后就能看到算子的消耗时间

用连续自然数之和来表达整数

文章目录 题目描述&#xff1a;用连续自然数之和来表达整数输入描述输出描述用例1说明用例2代码运行举例注意&#xff1a;1、sprintf 和 strcat区别2、qsort 题目描述&#xff1a;用连续自然数之和来表达整数 一个整数可以由连续的自然数之和来表示。 给定一个整数&#xff0c…

基于学习的参数化查询优化方法

一、背景介绍 参数化查询是指具有相同模板&#xff0c;且只有谓词绑定参数值不同的一类查询&#xff0c;它们被广泛应用在现代数据库应用程序中。它们存在反复执行动作&#xff0c;这为其性能优化提供了契机。 然而&#xff0c;当前许多商业数据库处理参数化查询的方法仅仅只…

大顶堆、小顶堆

堆 堆堆的维护1.自我初始化代码2.插入时维护时间复杂度 代码如有误欢迎指出 本文是最近在整理排序算法的时候写到堆排序单拎出来写的&#xff0c;目前只有维护代码 堆 堆是一颗完全二叉树&#xff0c;同时保证所有双亲都比自己的孩子大&#xff08;可以相等 堆的维护 使用数…