theme.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { ElMessage } from 'element-plus';
  2. /**
  3. * @description hex颜色转rgb颜色
  4. * @param str 颜色值字符串
  5. * @returns {string} 返回处理后的颜色值
  6. */
  7. export function hexToRgb(str: any) {
  8. let hexes: any = '';
  9. let reg = /^\#?[0-9A-Fa-f]{6}$/;
  10. if (!reg.test(str)) return ElMessage.warning('输入错误的hex');
  11. str = str.replace('#', '');
  12. hexes = str.match(/../g);
  13. for (let i = 0; i < 3; i++) hexes[i] = parseInt(hexes[i], 16);
  14. return hexes;
  15. }
  16. /**
  17. * @description rgb颜色转Hex颜色
  18. * @param r 代表红色
  19. * @param g 代表绿色
  20. * @param b 代表蓝色
  21. * @returns {string} 返回处理后的颜色值
  22. */
  23. export function rgbToHex(r: any, g: any, b: any) {
  24. let reg = /^\d{1,3}$/;
  25. if (!reg.test(r) || !reg.test(g) || !reg.test(b)) return ElMessage.warning('输入错误的rgb颜色值');
  26. let hexes = [r.toString(16), g.toString(16), b.toString(16)];
  27. for (let i = 0; i < 3; i++) if (hexes[i].length == 1) hexes[i] = `0${hexes[i]}`;
  28. return `#${hexes.join('')}`;
  29. }
  30. /**
  31. * @description 加深颜色值
  32. * @param color 颜色值字符串
  33. * @param level 加深的程度,限0-1之间
  34. * @returns {string} 返回处理后的颜色值
  35. */
  36. export function getDarkColor(color: string, level: number) {
  37. let reg = /^\#?[0-9A-Fa-f]{6}$/;
  38. if (!reg.test(color)) return ElMessage.warning('输入错误的hex颜色值');
  39. let rgb = hexToRgb(color);
  40. for (let i = 0; i < 3; i++) rgb[i] = Math.floor(rgb[i] * (1 - level));
  41. return rgbToHex(rgb[0], rgb[1], rgb[2]);
  42. }
  43. /**
  44. * 变浅颜色值
  45. * @param color 颜色值字符串
  46. * @param level 加深的程度,限0-1之间
  47. * @returns {string} 返回处理后的颜色值
  48. */
  49. export function getLightColor(color: string, level: number) {
  50. let reg = /^\#?[0-9A-Fa-f]{6}$/;
  51. if (!reg.test(color)) return ElMessage.warning('输入错误的hex颜色值');
  52. let rgb = hexToRgb(color);
  53. for (let i = 0; i < 3; i++) rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i]);
  54. return rgbToHex(rgb[0], rgb[1], rgb[2]);
  55. }