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

    js colorpicker实现

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

添加高级功能

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

js colorpicker实现

  • 透明度控制

    <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));
    });
  • 颜色历史记录

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

标签: jscolorpicker
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现

js实现

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

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js验证码的实现

js验证码的实现

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

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…