元素可以快速实现基础颜色选择器功能。现代浏览器都支持该输入类型,点击时会弹出系统原生颜色…">
当前位置:首页 > JavaScript

js colorpicker实现

2026-03-14 05:47:37JavaScript

使用原生JavaScript实现颜色选择器

通过HTML5的<input type="color">元素可以快速实现基础颜色选择器功能。现代浏览器都支持该输入类型,点击时会弹出系统原生颜色选择对话框。

<input type="color" id="colorPicker" value="#ff0000">
<script>
  const colorPicker = document.getElementById('colorPicker');
  colorPicker.addEventListener('input', (e) => {
    console.log('Selected color:', e.target.value);
  });
</script>

自定义颜色选择器UI

如果需要完全自定义界面,可以通过Canvas绘制色相环和亮度梯度:

function createColorPicker() {
  const canvas = document.createElement('canvas');
  canvas.width = 300;
  canvas.height = 300;
  const ctx = canvas.getContext('2d');

  // 绘制色相环
  const radius = 150;
  for(let angle = 0; angle < 360; angle++) {
    const startAngle = (angle - 2) * Math.PI / 180;
    const endAngle = angle * Math.PI / 180;
    ctx.beginPath();
    ctx.moveTo(150, 150);
    ctx.arc(150, 150, radius, startAngle, endAngle);
    ctx.closePath();
    ctx.fillStyle = `hsl(${angle}, 100%, 50%)`;
    ctx.fill();
  }

  return canvas;
}

集成第三方库

使用成熟的颜色选择器库可以节省开发时间:

  1. Spectrum.js - 轻量级jQuery插件

    <input type='text' id="spectrum"/>
    <script>
    $("#spectrum").spectrum({
     color: "#f00",
     preferredFormat: "hex"
    });
    </script>
  2. Pickr - 无依赖的现代颜色选择器

    const pickr = Pickr.create({
    el: '.color-picker',
    default: '#42445A',
    components: {
     preview: true,
     opacity: true,
     hue: true
    }
    });

实现颜色格式转换

颜色选择器通常需要处理多种格式转换:

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: h*360, s: s*100, l: l*100 };
}

添加高级功能

完善的颜色选择器应包含以下功能:

  • 透明度控制

    <input type="range" id="alpha" min="0" max="100" value="100">
  • 预设调色板

    const swatches = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00'];
    swatches.forEach(color => {
    const swatch = document.createElement('div');
    swatch.style.backgroundColor = color;
    swatch.addEventListener('click', () => updateColor(color));
    });
  • 颜色历史记录

    js colorpicker实现

    const colorHistory = [];
    function addToHistory(color) {
    colorHistory.unshift(color);
    if(colorHistory.length > 8) colorHistory.pop();
    }

标签: jscolorpicker
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…