color.ts 920 B

12345678910111213141516171819202122232425262728293031323334
  1. export default {
  2. // hex颜色转rgb颜色
  3. hexToRgb(str: string) {
  4. str = str.replace('#', '')
  5. const hxs = str.match(/../g) || []
  6. const res = []
  7. for (let i = 0; i < 3; i++) {
  8. res[i] = parseInt(hxs[i], 16)
  9. }
  10. return res
  11. },
  12. // rgb颜色转hex颜色
  13. rgbToHex(rgb: Array<number>) {
  14. const hexs = rgb.map(item => item.toString(16))
  15. for (let i = 0; i < 3; i++) {
  16. if (hexs[i].length == 1) hexs[i] = '0' + hexs[i]
  17. }
  18. return '#' + hexs.join('')
  19. },
  20. // 加深
  21. darken(color: string, level: number) {
  22. const rgbc = this.hexToRgb(color)
  23. for (let i = 0; i < 3; i++) rgbc[i] = Math.floor(rgbc[i] * (1 - level))
  24. return this.rgbToHex(rgbc)
  25. },
  26. // 变淡
  27. lighten(color: string, level: number) {
  28. const rgbc = this.hexToRgb(color)
  29. for (let i = 0; i < 3; i++) rgbc[i] = Math.floor((255 - rgbc[i]) * level + rgbc[i])
  30. return this.rgbToHex(rgbc)
  31. }
  32. }