theme.js 2.0 KB

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