Skip to content

颜色Color

extendHex

将3(4)位16进制色值转为6(8)位

类型说明

INFO

function extendHex(hex: string): string;

参数

  • hex 字符串

返回

  • string

TIP

6位hex

异常

DANGER

无法识别正确的hex hex参数不是正确的hex时触发

示例

ts
extendHex('#03f') // => '#0033ff'
ts
extendHex('#03ff') // => '#0033ffff'

源码

Ts
import isHex from '@/color/isHex'
export default function extendHex(hex: string): string {
  if (!isHex(hex)) throw '无法识别正确的hex'
  if (hex.length >= 6) return hex
  return `#${hex.substring(1).split('').map(item => (item += item)).join('')}`
}
Js
import isHex from '@/color/isHex';
export default function extendHex(hex) {
  if (!isHex(hex)) throw '无法识别正确的hex';
  if (hex.length >= 6) return hex;
  return `#${hex.substring(1).split('').map((item) => item += item).join('')}`;
}

hexToRgb

将16进制hex色值转为rgb(a)色值

类型说明

INFO

function hexToRgb(hex?: string): string;

参数

  • hex 字符串

返回

  • string

TIP

字符串

异常

DANGER

无法识别正确的hex hex参数不是正确的hex时触发

示例

ts
hexToRgb('#aabbcc') // => '170,187,204'

支持透明度

ts
hexToRgb('#aabbcc8d') // => '170,187,204,0.55'

源码

Ts
import toFixed from '@/number/toFixed'
import extendHex from '@/color/extendHex'
import isHex from '@/color/isHex'
export default function hexToRgb(hex?: string): string {
  if (!isHex(hex)) throw '无法识别正确的hex'
  if (hex!.substring(1).length < 6) hex = extendHex(hex!).substring(1)
  hex = (hex!.match(/[0-9a-f]{2}/gi)!).map((s, i) => (i === 3 ? toFixed(parseInt(s, 16) / 255) : parseInt(s, 16))).join(',')
  return hex
}
Js
import toFixed from '@/number/toFixed';
import extendHex from '@/color/extendHex';
import isHex from '@/color/isHex';
export default function hexToRgb(hex) {
  if (!isHex(hex)) throw '无法识别正确的hex';
  if (hex.substring(1).length < 6) hex = extendHex(hex).substring(1);
  hex = hex.match(/[0-9a-f]{2}/gi).map((s, i) => i === 3 ? toFixed(parseInt(s, 16) / 255) : parseInt(s, 16)).join(',');
  return hex;
}

isHex

判断是否是16进制hex色值

类型说明

INFO

function isHex(hex?: string): boolean;

参数

  • hex 字符串

返回

  • boolean

TIP

true | false

示例

ts
isHex('#aabbcc') // => true

支持3位

ts
isHex('#abc') // => true

支持透明度

ts
isHex('#aabbcc8d') // => true

支持透明度

ts
isHex('#df') // => false

支持透明度

ts
isHex('#adg') // => false

源码

Ts
import isString from '@/verify/isString'
export default function isHex(hex?: string): boolean {
  if (!isString(hex)) return false
  return /#(([0-9a-f]{3})|([0-9a-f]{4})|([0-9a-f]{6})|([0-9a-f]{8}))$/gi.test(hex!)
}
Js
import isString from '@/verify/isString';
export default function isHex(hex) {
  if (!isString(hex)) return false;
  return /#(([0-9a-f]{3})|([0-9a-f]{4})|([0-9a-f]{6})|([0-9a-f]{8}))$/gi.test(hex);
}

isRgba

判断是否是16进制hex色值

类型说明

INFO

function isRgba(rgba?: string): boolean;

参数

  • rgba 字符串

返回

  • boolean

TIP

true | false

示例

ts
isRgba('170,187,255') // => true

支持透明度

ts
isRgba('170,187,255,0.91') // => true

支持透明度

ts
isRgba('170,187,266,0.91') // => false

支持透明度

ts
isRgba('170,187,256,2') // => false

源码

Ts
import isString from '@/verify/isString'
export default function isRgba(rgba?: string): boolean {
  if (!isString(rgba)) return false
  return rgba!.split(',').every((s, i) => {
    if (i == 3) return Number(s) * 255 >= 0 && Number(s) * 255 <= 255
    return Number(s) >= 0 && Number(s) <= 255
  })
}
Js
import isString from '@/verify/isString';
export default function isRgba(rgba) {
  if (!isString(rgba)) return false;
  return rgba.split(',').every((s, i) => {
    if (i == 3) return Number(s) * 255 >= 0 && Number(s) * 255 <= 255;
    return Number(s) >= 0 && Number(s) <= 255;
  });
}

randomHex

随机生成16进制色值

类型说明

INFO

function randomHex(): string;

返回

  • string

TIP

字符串

示例

ts
randomHex() // => '#cf65dd'

源码

Ts
import random from '@/util/random'
export default function randomHex(): string {
  const hexs = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
  let hex = '#'
  for (let i = 0; i < 6; i++) {
    hex += hexs[random(0, 15)]
  }
  return hex
}
Js
import random from '@/util/random';
export default function randomHex() {
  const hexs = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
  let hex = '#';
  for (let i = 0; i < 6; i++) {
    hex += hexs[random(0, 15)];
  }
  return hex;
}

randomRgba

随机生成RGBA色值

类型说明

INFO

function randomRgba(): string;

返回

  • string

TIP

字符串

示例

ts
randomRgba() // => '#cf65dd'

源码

Ts
import toFixed from '@/number/toFixed';
import random from '@/util/random';
export default function randomRgba(): string {
  return `${random(0, 255)}, ${random(0, 255)}, ${random(0, 255)}, ${toFixed(random(0, 100) / 100)}`
}
Js
import toFixed from '@/number/toFixed';
import random from '@/util/random';
export default function randomRgba() {
  return `${random(0, 255)}, ${random(0, 255)}, ${random(0, 255)}, ${toFixed(random(0, 100) / 100)}`;
}

rgbToHex

将rgb(a)色值转为16进制hex色值

类型说明

INFO

function rgbToHex(rgba: string): string;

参数

  • rgba 字符串

返回

  • string

TIP

字符串

异常

DANGER

无法识别正确的rgba rgba参数不是正确的hex时触发

示例

ts
rgbToHex('170,187,255') // => '#aabbff'

// 支持透明度

ts
rgbToHex('170,187,255,0.91') // => '#aabbffe8'

源码

Ts
import isRgba from '@/color/isRgba'
export default function rgbToHex(rgba: string): string {
  if (!isRgba(rgba)) throw '无法识别正确的rgba'
  let rgbas = rgba.split(',')
  rgbas = rgbas.map((s, i) => {
    if (i == 3) return Math.round(Number(s) * 255).toString(16).padStart(2, '0')
    return Number(s).toString(16).padStart(2, '0')
  })
  return '#' + rgbas.join('')
}
Js
import isRgba from '@/color/isRgba';
export default function rgbToHex(rgba) {
  if (!isRgba(rgba)) throw '无法识别正确的rgba';
  let rgbas = rgba.split(',');
  rgbas = rgbas.map((s, i) => {
    if (i == 3) return Math.round(Number(s) * 255).toString(16).padStart(2, '0');
    return Number(s).toString(16).padStart(2, '0');
  });
  return '#' + rgbas.join('');
}

shrinkHex

将6(8)位16进制色值转为3(4)位

类型说明

INFO

function shrinkHex(hex?: string): string;

参数

  • hex 字符串

返回

  • string

TIP

3位hex

异常

DANGER

无法识别正确的hex hex参数不是正确的hex时触发

示例

ts
shrinkHex('#0033ff') // => '#03f'

// 无法转化的原样输出

ts
shrinkHex('#0037ff') // => '#0037ff'

源码

Ts
import isHex from '@/color/isHex'
export default function shrinkHex(hex?: string): string {
  if (!isHex(hex)) throw '无法识别正确的hex'
  if (hex!.substring(1)!.length < 6) return hex!
  const hexs = hex!.substring(1).match(/[0-9a-f]{2}/gi)!
  return '#' + hexs.map(item => item[0]).join('')
}
Js
import isHex from '@/color/isHex';
export default function shrinkHex(hex) {
  if (!isHex(hex)) throw '无法识别正确的hex';
  if (hex.substring(1).length < 6) return hex;
  const hexs = hex.substring(1).match(/[0-9a-f]{2}/gi);
  return '#' + hexs.map((item) => item[0]).join('');
}