HTML5 提供了原生颜色选择器支持,兼容现代浏览器:
当前位置:首页 > JavaScript

js colorpicker实现

2026-04-05 23:49:32JavaScript

实现 JavaScript 颜色选择器的几种方法

使用 HTML5 原生 <input type="color">

HTML5 提供了原生颜色选择器支持,兼容现代浏览器:

<input type="color" id="colorPicker" value="#ff0000">

通过 JavaScript 获取选择的值:

const colorPicker = document.getElementById('colorPicker');
colorPicker.addEventListener('input', (e) => {
  console.log(e.target.value); // 输出十六进制颜色值
});

使用第三方库(如 Spectrum)

Spectrum 是一个轻量级的颜色选择器库,支持高级功能:

安装:

npm install spectrum-colorpicker

使用示例:

<input type="text" id="customPicker">
<script src="spectrum.js"></script>
<link rel="stylesheet" href="spectrum.css">
<script>
  $("#customPicker").spectrum({
    color: "#f00",
    preferredFormat: "hex",
    showInput: true
  });
</script>

自定义实现颜色选择器

创建一个基本的 HSV 颜色选择器:

<div id="colorArea" style="width:200px;height:200px;"></div>
<input type="range" id="hueSlider" min="0" max="360">
<div id="selectedColor" style="width:50px;height:50px;"></div>

JavaScript 逻辑:

const colorArea = document.getElementById('colorArea');
const hueSlider = document.getElementById('hueSlider');
const selectedColor = document.getElementById('selectedColor');

hueSlider.addEventListener('input', updateColor);
colorArea.addEventListener('click', pickColor);

function updateColor() {
  const hue = hueSlider.value;
  colorArea.style.background = `hsl(${hue}, 100%, 50%)`;
}

function pickColor(e) {
  const rect = colorArea.getBoundingClientRect();
  const x = e.clientX - rect.left;
  const y = e.clientY - rect.top;
  const saturation = (x / rect.width) * 100;
  const lightness = 100 - (y / rect.height) * 100;
  selectedColor.style.background = `hsl(${hueSlider.value}, ${saturation}%, ${lightness}%)`;
}

使用 Canvas 实现高级选择器

通过 Canvas 绘制渐变颜色选择区域:

<canvas id="colorCanvas" width="256" height="256"></canvas>

JavaScript 代码:

const canvas = document.getElementById('colorCanvas');
const ctx = canvas.getContext('2d');

// 创建水平饱和度渐变
const satGradient = ctx.createLinearGradient(0, 0, canvas.width, 0);
satGradient.addColorStop(0, 'white');
satGradient.addColorStop(1, `hsl(0, 100%, 50%)`);

// 创建垂直明度渐变
const lightGradient = ctx.createLinearGradient(0, 0, 0, canvas.height);
lightGradient.addColorStop(0, 'transparent');
lightGradient.addColorStop(1, 'black');

ctx.fillStyle = satGradient;
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = lightGradient;
ctx.fillRect(0, 0, canvas.width, canvas.height);

颜色格式转换函数

实现常用颜色格式转换:

js colorpicker实现

function hexToRgb(hex) {
  const r = parseInt(hex.slice(1, 3), 16);
  const g = parseInt(hex.slice(3, 5), 16);
  const b = parseInt(hex.slice(5, 7), 16);
  return { r, g, b };
}

function rgbToHsl(r, g, b) {
  r /= 255, g /= 255, b /= 255;
  const max = Math.max(r, g, b), min = Math.min(r, g, b);
  let h, s, l = (max + min) / 2;

  if (max === min) {
    h = s = 0;
  } else {
    const d = max - min;
    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
    switch (max) {
      case r: h = (g - b) / d + (g < b ? 6 : 0); break;
      case g: h = (b - r) / d + 2; break;
      case b: h = (r - g) / d + 4; break;
    }
    h /= 6;
  }
  return [h * 360, s * 100, l * 100];
}

标签: jscolorpicker
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…