Chroma.js 颜色处理库全面指南
2025-07-06 06:01:51作者:翟萌耘Ralph
概述
Chroma.js 是一个轻量级、零依赖的 JavaScript 颜色处理库,提供了丰富的颜色转换、操作和缩放功能。它支持多种颜色空间,能够帮助开发者轻松处理各种颜色相关的任务。
核心功能
1. 颜色解析与创建
Chroma.js 支持多种颜色输入格式:
// 命名颜色
chroma('hotpink')
// 十六进制字符串
chroma('#ff3399')
chroma('F39')
// RGB 值
chroma(255, 51, 153)
chroma([255, 51, 153])
// HSL 值
chroma(330, 1, 0.6, 'hsl')
2. 颜色空间支持
Chroma.js 支持多种颜色空间,包括:
- RGB/HSL/HSV
- Lab/Lch (CIE Lab)
- CMYK
- Oklab/Oklch (感知均匀的颜色空间)
- 温度色标
// Lab 颜色空间
chroma.lab(40, -20, 50)
// Lch 颜色空间
chroma.lch(80, 40, 130)
// 温度色标
chroma.temperature(6500) // 日光色温
3. 颜色操作
Chroma.js 提供了丰富的颜色操作方法:
// 调整亮度
chroma('hotpink').darken(2).brighten(1)
// 调整饱和度
chroma('slategray').saturate(2).desaturate(1)
// 混合颜色
chroma.mix('red', 'blue', 0.5, 'lab')
// 计算对比度
chroma.contrast('pink', 'purple') // 检查WCAG对比度
高级功能
1. 颜色缩放
Chroma.js 可以创建颜色渐变:
// 创建颜色渐变
const scale = chroma.scale(['#fafa6e', '#2A4858'])
.mode('lch')
.colors(6)
2. 颜色差异计算
// 计算颜色差异
chroma.deltaE('#ededee', '#edeeed') // CIE2000色差算法
chroma.distance('#fff', '#ff0', 'rgb') // 欧几里得距离
3. 数据分类
Chroma.js 提供了数据分类功能:
const data = [2.0, 3.5, 3.6, /*...*/, 8.0];
chroma.limits(data, 'q', 4) // 分位数分类
实际应用示例
创建可访问的颜色方案
function getAccessibleColor(textColor, backgroundColor) {
const contrast = chroma.contrast(textColor, backgroundColor);
if (contrast < 4.5) {
// 对比度不足,调整文本颜色
return chroma(textColor).luminance() > 0.5
? chroma(textColor).darken(2)
: chroma(textColor).brighten(2);
}
return textColor;
}
生成调色板
function generatePalette(baseColor, count=5) {
return chroma.scale([
chroma(baseColor).brighten(1.5),
baseColor,
chroma(baseColor).darken(1.5)
]).mode('lch').colors(count);
}
性能与使用建议
- 按需导入:可以通过 tree-shaking 只导入需要的功能模块
- 颜色空间选择:对于颜色混合,推荐使用感知均匀的颜色空间(如 lab、lch)
- 缓存计算结果:频繁使用的颜色转换结果可以缓存以提高性能
Chroma.js 的强大功能使其成为数据可视化、UI设计和任何需要复杂颜色处理的Web应用的理想选择。通过合理利用其丰富的API,开发者可以轻松实现专业的颜色处理逻辑。