vue根据配置的色值全局更改主题色

  setThemeColor("--color-primary", themeConfig.themeColor);
  setThemeColor("--el-color-primary", themeConfig.themeColor);
/**
 * 设置主题色
 * @param key
 * @param value
 */
export const setThemeColor = (key, value) => {
  const elm = window.document.querySelector("body");
  if (elm) {
    elm.style.setProperty(key, value);
    elm.style.setProperty(key + "-light", value + "14");
    for (let i = 0; i < 8; i++) {
      // #87b9b3
      elm.style.setProperty(key + "-light-" + (i + 2), lighten(value, i / 10));
      elm.style.setProperty(key + "-dark-" + (i + 2), darken(value, i / 10));
    }
  }
};
export function hex2Rgb(color) {
  color = color.replace("#", "");
  const result = color.match(/../g);
  for (let i = 0; i < 3; i++) {
    result[i] = parseInt(result[i], 16);
  }
  return result;
}
export function rgb2Hex(r, g, b) {
  const 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];
    }
  }
  const result = "#" + hexs.join("");
  return result;
}
export function lighten(color, level) {
  const rgb = hex2Rgb(color);
  for (let i = 0; i < 3; i++) {
    rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i]);
  }
  const result = rgb2Hex(rgb[0], rgb[1], rgb[2]);
  return result;
}
export function darken(color, level) {
  const rgb = hex2Rgb(color);
  for (let i = 0; i < 3; i++) {
    rgb[i] = Math.floor(rgb[i] * (1 - level));
  }
  const result = rgb2Hex(rgb[0], rgb[1], rgb[2]);
  return result;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值