当前位置: 首页 > news >正文

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.documentElementel.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>

 最终结果如下

相关文章:

  • 【Docker】基于yum安装docker
  • uniapp富文本文字长按选中(用于复制,兼容H5、APP、小程序三端)
  • 代码随想录算法训练营|day32
  • MySQL篇—事务和隔离级别介绍
  • CTFHub技能树web之RCE(二)
  • 【LeetCode】递归精选8题——基础递归、链表递归
  • Android | ArcGIS入门
  • FreeRTOS学习笔记——(FreeRTOS临界段代码保护及调度器挂起与恢复)
  • C#,洗牌问题(Card Shuffle Problem)的算法与源代码
  • 解决element UI中el-select选择器比el-input输入框默认宽度小
  • Hive数据仓库行转列
  • 爬虫基本库的使用(urllib库的详细解析)
  • uniapp上传文件到腾讯云
  • mac下mysql 常用命令
  • 【前端素材】推荐优质后台管理系统Symox模板(适用电商,附带源码)
  • [case10]使用RSQL实现端到端的动态查询
  • [译] React v16.8: 含有Hooks的版本
  • 【剑指offer】让抽象问题具体化
  • CEF与代理
  • CentOS7 安装JDK
  • CentOS从零开始部署Nodejs项目
  • ES6之路之模块详解
  • exif信息对照
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • PHP的类修饰符与访问修饰符
  • rabbitmq延迟消息示例
  • Shadow DOM 内部构造及如何构建独立组件
  • Spark学习笔记之相关记录
  • Vue.js源码(2):初探List Rendering
  • 初识MongoDB分片
  • 复杂数据处理
  • 关于Flux,Vuex,Redux的思考
  • 每天10道Java面试题,跟我走,offer有!
  • 如何解决微信端直接跳WAP端
  • 双管齐下,VMware的容器新战略
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • (0)Nginx 功能特性
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (pytorch进阶之路)扩散概率模型
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)使用VMware vSphere标准交换机设置网络连接
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET NPOI导出Excel详解
  • .Net Web项目创建比较不错的参考文章
  • .NET 设计一套高性能的弱事件机制