vue2 vue3 修改elementUI和elementPlus主题颜色

vue2 vue3 修改elementUI和elementPlus主题颜色

  • 工具类theme.js
js 复制代码
// 
/**
 * 处理主题样式
 * @param {String} theme 主题颜色 如: '#409EFF'
 */
export function handleThemeStyle(theme) {
	document.documentElement.style.setProperty('--el-color-primary', theme)
	for (let i = 1; i <= 9; i++) {
		document.documentElement.style.setProperty(`--el-color-primary-light-${i}`, `${getLightColor(theme, i / 10)}`)
	}
	for (let i = 1; i <= 9; i++) {
		document.documentElement.style.setProperty(`--el-color-primary-dark-${i}`, `${getDarkColor(theme, i / 10)}`)
	}
}

// hex颜色转rgb颜色
export function hexToRgb(str) {
	str = str.replace('#', '')
	let hexs = str.match(/../g)
	for (let i = 0; i < 3; i++) {
		hexs[i] = parseInt(hexs[i], 16)
	}
	return hexs
}

// rgb颜色转Hex颜色
export function rgbToHex(r, g, b) {
	let hexs = [r.toString(16), g.toString(16), b.toString(16)]
	for (let i = 0; i < 3; i++) {
		if (hexs[i].length == 1) {
			hexs[i] = `0${hexs[i]}`
		}
	}
	return `#${hexs.join('')}`
}

// 变浅颜色值
export function getLightColor(color, level) {
	let rgb = hexToRgb(color)
	for (let i = 0; i < 3; i++) {
		rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i])
	}
	return rgbToHex(rgb[0], rgb[1], rgb[2])
}

// 变深颜色值
export function getDarkColor(color, level) {
	let rgb = hexToRgb(color)
	for (let i = 0; i < 3; i++) {
		rgb[i] = Math.floor(rgb[i] * (1 - level))
	}
	return rgbToHex(rgb[0], rgb[1], rgb[2])
}
  • App.vue中调用
js 复制代码
import { handleThemeStyle } from '@/utils/theme';

onMounted(() => {
  nextTick(() => {
    // 初始化主题样式
    handleThemeStyle('#409EFF');
  });
});
相关推荐
亮子AI21 小时前
Chrome 和 Edge 生成的 fingerprint 是一样的?
前端·chrome·edge
狼性书生21 小时前
uniapp实现的时间范围选择器组件
前端·uni-app·vue·组件·插件
前端不太难21 小时前
RN 项目安全如何强化?(逆向、API安全、JS泄露)
开发语言·javascript·安全
Nan_Shu_61421 小时前
学习:Pinia(1)
javascript·vue.js·学习
小白学大数据21 小时前
实时监控 1688 商品价格变化的爬虫系统实现
javascript·爬虫·python
挫折常伴左右21 小时前
HTML中的表单
前端·html
天问一21 小时前
前端引用printJS打印
前端·arcgis
哆啦A梦158821 小时前
商城后台管理系统 04 登录-功能实现-数据持久化-vuex
javascript·vue.js·elementui
xinyu_Jina1 天前
PaperStudio:WYSIWYG文档的Web实现——从CSS Print到客户端PDF生成的技术解析
前端·css·pdf
默默学前端1 天前
html列表标签及css列表属性
前端·css·html5