更新记录

1.0.2(2024-03-09)

  • 新增 lighten 方法 淡化颜色
  • 新增 darken 方法 深化颜色
  • 新增 mean 方法 获取若干个颜色的平均值
  • 新增 complement 方法 获取互补色
  • 新增 contrasting 方法 获取指定颜色背景上文字的最佳颜色(黑色或白色)
  • 新增 equal 方法 判断颜色是否相等
  • 新增 calcAPCA 方法 计算指定文本色与背景色的感知亮度对比数值

1.0.1(2024-03-03)

优化 插件说明文档

1.0.0(2024-03-03)

  • 支持 rgb、hex、hsl、hsv、cmy、cmyk 六种常用颜色的相互转换,共 30个方法
  • 支持 getFormat 方法获取颜色的格式
  • 支持 generateColors 方法通过一个主色一键生成共十级颜色的色板
查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.6.8,Android:4.4,iOS:不确定 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × ×

sn-color

适用于 uni-app及 uni-app-x 的 UTS 颜色模型转换插件。支持 rgb、hex、hsl、hsv、cmy、cmyk 等常用颜色的转换;提供一些常用的颜色计算操作;内置 Ant Design 色板生成工具,实现提供一个主色,一键生成完整的色板。

此插件是 SinleUI 框架的内置插件。

除颜色转换 API 以外的其他 API,提供的颜色参数及返回的颜色均为 Hex 格式。

API

getFormat(color)

获取颜色对象的格式。如果提供的参数不符合 sn-color 颜色规范,则返回 null

参数

名称 类型 必填 默认值 可选值 说明
color any - - 颜色对象

返回值

类型
string

generateColors(params)

内置 Ant Design 色板生成工具,提供一个主色,一键生成共十级颜色的色板。

参数

名称 类型 必填 默认值 可选值 说明
params generateColorsOption(定义见下) - - 颜色配置

返回值

类型
string[]

lighten(color)

淡化颜色。

参数

名称 类型 必填 默认值 可选值 说明
color string - - Hex 颜色。如不是合法 Hex 颜色则返回 #fff
ratio number - - 淡化颜色的饱和度与原颜色的比例。ratio 越小,越接近白色;ratio 越大,越接近原颜色。范围为 0~1

返回值

类型
string

darken(color)

深化颜色。

参数

名称 类型 必填 默认值 可选值 说明
color string - - Hex 颜色。如不是合法 Hex 颜色则返回 #000
ratio number - - 深化颜色的亮度与原颜色的比例。ratio 越小,越接近黑色;ratio 越大,越接近原颜色。范围为 0~1

返回值

类型
string

mean(colors)

获取平均颜色。即返回若干个颜色的平均值。

参数

名称 类型 必填 默认值 可选值 说明
colors string[] - - Hex 颜色组。如某个成员不是合法 Hex 颜色则此成员值自动设为 #fff

返回值

类型
string

complement(color)

获取互补色。即色相旋转180°得到的颜色。原颜色与其互补色等量相加后产生白色。

参数

名称 类型 必填 默认值 可选值 说明
color string - - Hex 颜色。如不是合法 Hex 颜色则返回原颜色

返回值

类型
string

contrasting(bgColor)

获取指定颜色背景上文字的最佳颜色(黑色或白色)。即判断黑色与白色哪一个与背景颜色的视觉对比最大。

参数

名称 类型 必填 默认值 可选值 说明
bgColor string - - 背景颜色。Hex 颜色。如不是合法 Hex 颜色则返回原背景颜色

返回值

类型
string

equal(color)

判断颜色是否相等。实际上多用于判断不规范 Hex 值是否相等,如:#fffFFFFFFFF,仅通过 String 方法判断颜色是否为同一值较为繁琐,使用此方法可快速判断两 Hex 颜色是否相等。

参数

名称 类型 必填 默认值 可选值 说明
color1 string - - Hex 颜色。如不是合法 Hex 颜色则返回 false
color2 string - - Hex 颜色。如不是合法 Hex 颜色则返回 false

返回值

类型
boolean

calcAPCA(textColor, bgColor, round)

计算指定文本色与背景色的感知亮度对比数值(Lc),范围为 -108 ~ +106,浅色背景深色文字为正数、深色背景浅色文字为负数,背景与文字颜色互换后返回的是原数值的相反数。

可访问的感知对比度算法(Accessible Perceptual Contrast Algorithm,简称 APCA),基于字形属性、文本与背景的感知亮度差异、环境与上下文等特征进行对比度计算,目标是更接近人眼的实际感受。

APCA 是 WCAG 3.0 无障碍标准候选方法之一。由于 WCAG 2.0 对暗黑背景的支持较差,故选用了APCA 作为计算文字-背景颜色对比度的方法。

因该项目处于实验阶段,未来可能会进行一定调整。

参考: GitHub - Myndex/SAPC-APCA不要依赖 WCAG 2 的对比度计算,试试 APCA

参数

名称 类型 必填 默认值 可选值 说明
textColor string - - 文本颜色。Hex 颜色。如不是合法 Hex 颜色则返回 0
bgColor string - - 背景颜色。Hex 颜色。如不是合法 Hex 颜色则返回 0
round boolean true true | false 是否将结果四舍五入到整数。

返回值

类型
number

rgb2hex(rgb)

RGB 颜色转 HEX 颜色

参数

名称 类型 必填 默认值 可选值 说明
rgb snRgb - - RGB 颜色

返回值

类型
string

rgb2hsv(rgb)

RGB 颜色转 HSV 颜色

参数

名称 类型 必填 默认值 可选值 说明
rgb snRgb - - RGB 颜色

返回值

类型
snHsv

rgb2hsl(rgb)

RGB 颜色转 HSL 颜色

参数

名称 类型 必填 默认值 可选值 说明
rgb snRgb - - RGB 颜色

返回值

类型
snHsl

rgb2cmy(rgb)

RGB 颜色转 CMY 颜色

参数

名称 类型 必填 默认值 可选值 说明
rgb snRgb - - RGB 颜色

返回值

类型
snCmy

rgb2cmyk(rgb)

RGB 颜色转 CMYK 颜色

参数

名称 类型 必填 默认值 可选值 说明
rgb snRgb - - RGB 颜色

返回值

类型
snCmyk

hex2rgb(hex)

HEX 颜色转 RGB 颜色

参数

名称 类型 必填 默认值 可选值 说明
hex string - - HEX 颜色

返回值

类型
snRgb

hex2hsl(hex)

HEX 颜色转 HSL 颜色

参数

名称 类型 必填 默认值 可选值 说明
hex string - - HEX 颜色

返回值

类型
snHsl

hex2hsv(hex)

HEX 颜色转 HSV 颜色

参数

名称 类型 必填 默认值 可选值 说明
hex string - - HEX 颜色

返回值

类型
snHsv

hex2cmy(hex)

HEX 颜色转 CMY 颜色

参数

名称 类型 必填 默认值 可选值 说明
hex string - - HEX 颜色

返回值

类型
snCmy

hex2cmyk(hex)

HEX 颜色转 CMYK 颜色

参数

名称 类型 必填 默认值 可选值 说明
hex string - - HEX 颜色

返回值

类型
snCmyk

hsl2hsv(hsl)

HSL 颜色转 HSV 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsl snHsl - - HSL 颜色

返回值

类型
snHsv

hsl2rgb(hsl)

HSL 颜色转 RGB 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsl snHsl - - HSL 颜色

返回值

类型
snRgb

hsl2hex(hsl)

HSL 颜色转 HEX 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsl snHsl - - HSL 颜色

返回值

类型
string

hsl2cmy(hsl)

HSL 颜色转 CMY 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsl snHsl - - HSL 颜色

返回值

类型
snCmy

hsl2cmyk(hsl)

HSL 颜色转 CMYK 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsl snHsl - - HSL 颜色

返回值

类型
snCmyk

hsv2hsl(hsv)

HSV 颜色转 HSL 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsv snHsv - - HSV 颜色

返回值

类型
snHsl

hsv2rgb(hsv)

HSV 颜色转 RGB 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsv snHsv - - HSV 颜色

返回值

类型
snRgb

hsv2hex(hsv)

HSV 颜色转 HEX 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsv snHsv - - HSV 颜色

返回值

类型
string

hsv2cmy(hsv)

HSV 颜色转 CMY 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsv snHsv - - HSV 颜色

返回值

类型
snCmy

hsv2cmyk(hsv)

HSV 颜色转 CMYK 颜色

参数

名称 类型 必填 默认值 可选值 说明
hsv snHsv - - HSV 颜色

返回值

类型
snCmyk

cmy2cmyk(cmy)

CMY 颜色转 CMYK 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmy snCmy - - CMY 颜色

返回值

类型
snCmyk

cmy2rgb(cmy)

CMY 颜色转 RGB 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmy snCmy - - CMY 颜色

返回值

类型
snRgb

cmy2hex(cmy)

CMY 颜色转 HEX 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmy snCmy - - CMY 颜色

返回值

类型
string

cmy2hsl(cmy)

CMY 颜色转 HSL 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmy snCmy - - CMY 颜色

返回值

类型
snHsl

cmy2hsv(cmy)

CMY 颜色转 HSV 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmy snCmy - - CMY 颜色

返回值

类型
snHsv

cmyk2cmy(cmyk)

CMYK 颜色转 CMY 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmyk snCmyk - - CMYK 颜色

返回值

类型
snCmy

cmyk2rgb(cmyk)

CMYK 颜色转 RGB 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmyk snCmyk - - CMYK 颜色

返回值

类型
snRgb

cmyk2hex(cmyk)

CMYK 颜色转 HEX 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmyk snCmyk - - CMYK 颜色

返回值

类型
string

cmyk2hsl(cmyk)

CMYK 颜色转 HSL 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmyk snCmyk - - CMYK 颜色

返回值

类型
snHsl

cmyk2hsv(cmyk)

CMYK 颜色转 HSV 颜色

参数

名称 类型 必填 默认值 可选值 说明
cmyk snCmyk - - CMYK 颜色

返回值

类型
snHsv

自定义类型

snRgb

属性

名称 类型 必填 默认值 说明
r number - 红色(red),范围为 0~255
g number - 绿色(green),范围为 0~255
b number - 蓝色(blue),范围为 0~255
a number null 透明度(alpha),默认为null1),范围为 0~1

snHsl

属性

名称 类型 必填 默认值 说明
h number - 色相(hue),范围为 0~360
s number - 饱和度(saturation,又称纯度),范围为 0~1
l number - 明度(lightness),范围为 0~1
a number null 透明度(alpha),默认为null1),范围为 0~1

snHsv

属性

名称 类型 必填 默认值 说明
h number - 色相(hue),范围为 0~360
s number - 饱和度(saturation,又称纯度),范围为 0~1
v number - 亮度(value 或 brightness,故此 HSL 又称 HSB ),范围为 0~1
a number null 透明度(alpha),默认为null1),范围为 0~1

snCmy

属性

名称 类型 必填 默认值 说明
c number - 青色(cyan),范围为 0~1
m number - 洋红色(magenta,又称品红色),范围为 0~1
y number - 黄色(yellow ),范围为 0~1

snCmyk

属性

名称 类型 必填 默认值 说明
c number - 青色(cyan),范围为 0~1
m number - 洋红色(magenta,又称品红色),范围为 0~1
y number - 黄色(yellow ),范围为 0~1
k number - 黑色(black),范围为 0~1

generateColorsOption

属性

名称 类型 必填 默认值 可选值 说明
originColor string - - 主色
theme string light light | dark 颜色主题
bgColor string #000 - dark 主题下页面背景颜色

使用演示

  1. 导入插件
// 导入 sn-color 插件
import * as snColor from '../../uni_modules/sn-color'
import type { generateColorsOption, snRgb, snHsl, snHsv, snCmy, snCmyk } from '../../uni_modules/sn-color'
  1. 颜色转换
// 颜色转换
// HEX 转 RGB
console.log(snColor.hex2rgb('#ff0000'))
// RGB 转 HEX
console.log(snColor.rgb2hex({ r: 255, g: 231, b: 48, a: 1 } as snRgb))
console.log(snColor.rgb2cmyk({ r: 255, g: 231, b: 48 } as snRgb))
  1. 颜色计算、操作console.log(snColor.calcAPCA('#ff0000', '#4b4b4b'))
// 获取颜色格式
let color = { c: 0.2, m: 0.5, y: 0.1 } as snCmy)
console.log(snColor.getFormat(color))
// output: "cmy"

// 深化颜色
console.log(snColor.darken('#4f78ff', 0.7))
// output: "#3754b3"

// 淡化颜色
console.log(snColor.lighten('#4f78ff', 0.7))
// output: "#84a1ff"

// 获取指定背景上文字颜色的黑或白
console.log(snColor.contrasting('#4f78ff'))
// output: "#fff"

// 判断颜色是否相等
console.log(snColor.equal('#fff', 'FFFFFFFF'))
// output: true

// 获取互补色
console.log(snColor.complement('#ff0000'))
// output: "#00ffff"

// 获取平均颜色
console.log(snColor.mean(['#ff4e4e', '#fff014']))
// output: "#ff9f31"

// 获取 APCA 亮度对比值
console.log(snColor.calcAPCA('#ff0000', '#4b4b4b'))
// output: -24
  1. 一键生成色板
let colors = snColor.generateColors({ originColor: '#4f78ff'} as generateColorsOption)
console.log(colors)
// output: ["#f0f6ff","#e8f0ff","#c2d6ff","#9cb9ff","#759aff","#4f78ff","#3858d9","#253db3","#16268c","#101966"]

SinleUI:一个简洁、轻巧的现代移动应用UI框架。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问