首页
/ Chroma.js 颜色处理库全面指南

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);
}

性能与使用建议

  1. 按需导入:可以通过 tree-shaking 只导入需要的功能模块
  2. 颜色空间选择:对于颜色混合,推荐使用感知均匀的颜色空间(如 lab、lch)
  3. 缓存计算结果:频繁使用的颜色转换结果可以缓存以提高性能

Chroma.js 的强大功能使其成为数据可视化、UI设计和任何需要复杂颜色处理的Web应用的理想选择。通过合理利用其丰富的API,开发者可以轻松实现专业的颜色处理逻辑。