当前位置:首页 > JavaScript

JS实现取色

2026-04-07 05:47:47JavaScript

使用 input[type="color"] 元素

通过 HTML5 提供的原生颜色选择器快速实现取色功能:

JS实现取色

<input type="color" id="colorPicker">
<script>
  document.getElementById('colorPicker').addEventListener('input', (e) => {
    console.log('Selected color:', e.target.value); // 输出 HEX 格式颜色值(如 #RRGGBB)
  });
</script>

通过 Canvas 获取像素颜色

适用于从图像或画布中提取特定坐标的颜色:

JS实现取色

function getPixelColor(imageElement, x, y) {
  const canvas = document.createElement('canvas');
  canvas.width = imageElement.width;
  canvas.height = imageElement.height;
  const ctx = canvas.getContext('2d');
  ctx.drawImage(imageElement, 0, 0);
  const pixelData = ctx.getImageData(x, y, 1, 1).data;
  return `rgb(${pixelData[0]}, ${pixelData[1]}, ${pixelData[2]})`;
}

监听鼠标位置获取页面颜色

结合 document.elementFromPoint() 获取 DOM 元素颜色:

document.addEventListener('mousemove', (e) => {
  const element = document.elementFromPoint(e.clientX, e.clientY);
  if (element) {
    const style = window.getComputedStyle(element);
    console.log('Background color:', style.backgroundColor);
  }
});

第三方库实现高级取色

使用开源库(如 eyeDropper API 或 color-thief)扩展功能:

// 示例:eyeDropper API(需浏览器支持)
if ('EyeDropper' in window) {
  const eyeDropper = new EyeDropper();
  eyeDropper.open().then(result => {
    console.log('Picked color:', result.sRGBHex);
  });
}

注意事项

  • 跨域限制:通过 Canvas 获取图片颜色时,需确保图片具有 CORS 权限。
  • 浏览器兼容性:EyeDropper API 仅部分现代浏览器支持,需做兼容检测。
  • 性能优化:高频监听鼠标移动时建议使用防抖(debounce)减少计算压力。

标签: JS
分享给朋友:

相关文章

用JS实现冰墩墩

用JS实现冰墩墩

以下是用JavaScript绘制冰墩墩的几种实现方法,结合Canvas绘图和SVG路径数据: 使用Canvas绘制基础轮廓 const canvas = document.createEleme…

JS节流和防抖的实现

JS节流和防抖的实现

节流(Throttle)的实现 节流是指在一定时间间隔内,函数最多执行一次。常用于限制高频事件的触发频率,如滚动事件、窗口调整等。 function throttle(func, delay) {…

JS实现一个并发函数

JS实现一个并发函数

实现并发控制的几种方法 在JavaScript中实现并发控制可以通过多种方式,以下是几种常见的方法: Promise.all 使用Promise.all可以并行执行多个异步任务,等待所有任务完成后再…

JS实现取色

JS实现取色

使用 input[type="color"] 获取颜色值 HTML5 提供了原生颜色选择器,通过 <input type="color"> 可直接调用系统取色工具。用户选择的颜色会以十六进…

JS实现跳表

JS实现跳表

跳表(Skip List)简介 跳表是一种基于概率的平衡数据结构,通过多层链表实现高效查找、插入和删除操作,时间复杂度为 $O(\log n)$。其核心思想是通过“跳跃”式访问节点减少遍历次数。 跳…

JS如何实现左右滑动

JS如何实现左右滑动

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来跟踪触摸位置。记录起始点坐标和移动过程中的坐标变化。 let startX = 0; let endX…