js实现色谱
实现色谱的JavaScript方法
使用HTML5 Canvas绘制色谱是一种常见的方式。以下是一个基础的实现示例:
const canvas = document.createElement('canvas');
canvas.width = 360;
canvas.height = 100;
document.body.appendChild(canvas);
const ctx = canvas.getContext('2d');
for(let i = 0; i < 360; i++) {
ctx.fillStyle = `hsl(${i}, 100%, 50%)`;
ctx.fillRect(i, 0, 1, canvas.height);
}
使用CSS线性渐变创建色谱
CSS也能实现简单的色谱效果,适合不需要交互的场景:

.chroma-spectrum {
width: 360px;
height: 100px;
background: linear-gradient(
to right,
#ff0000, #ffff00, #00ff00,
#00ffff, #0000ff, #ff00ff, #ff0000
);
}
创建可交互的HSV色谱选择器
结合HSV色彩模型可以构建更实用的颜色选择器:

function drawHSVWheel(canvas) {
const ctx = canvas.getContext('2d');
const radius = Math.min(canvas.width, canvas.height) / 2;
const center = { x: canvas.width/2, y: canvas.height/2 };
for(let angle = 0; angle < 360; angle++) {
for(let r = 0; r < radius; r++) {
const hue = angle;
const saturation = r / radius * 100;
ctx.fillStyle = `hsl(${hue}, ${saturation}%, 50%)`;
ctx.beginPath();
ctx.moveTo(center.x, center.y);
ctx.arc(center.x, center.y, r, angle * Math.PI/180, (angle+1) * Math.PI/180);
ctx.closePath();
ctx.fill();
}
}
}
响应式色谱实现
添加事件监听使色谱具有交互功能:
canvas.addEventListener('click', (e) => {
const x = e.offsetX;
const hue = Math.round(x / canvas.width * 360);
const selectedColor = `hsl(${hue}, 100%, 50%)`;
console.log('Selected color:', selectedColor);
});
使用第三方库
对于复杂需求,可以考虑使用专业色彩库:
- chroma.js:提供丰富的色彩操作功能
- tinycolor:轻量级色彩处理库
- color.js:支持现代色彩空间
// 使用chroma.js示例
const colors = chroma.scale(['red', 'yellow', 'green', 'blue', 'violet']).mode('hsl').colors(360);
这些方法涵盖了从基础到进阶的色谱实现方案,可根据具体需求选择合适的方式。Canvas方案适合需要自定义绘制的场景,CSS方案性能更好但功能有限,第三方库则提供了最全面的色彩处理能力。






