当前位置:首页 > JavaScript

JS实现取色

2026-04-07 05:47:47JavaScript

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

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

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

通过 Canvas 获取像素颜色

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

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)扩展功能:

JS实现取色

// 示例: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
分享给朋友:

相关文章

实现 slice JS

实现 slice JS

实现 JavaScript 的 slice 方法 JavaScript 的 slice 方法用于从数组或字符串中提取一部分,返回一个新的数组或字符串,而不修改原始数据。以下是实现 slice 的核心逻…

JS实现勋章

JS实现勋章

实现动态勋章效果 使用CSS和JavaScript创建动态旋转勋章。HTML部分定义勋章容器,CSS设置样式和动画,JavaScript控制交互行为。 <div class="badge-co…

JS实现GPS

JS实现GPS

GPS定位的基本原理 GPS定位主要通过浏览器提供的Geolocation API实现。该API允许网页获取用户设备的地理位置信息,前提是用户授权同意。位置信息通常来源于设备的GPS模块、Wi-Fi或…

实现阶乘JS

实现阶乘JS

递归实现阶乘 递归是一种直接按照数学定义实现阶乘的方法。n的阶乘可以表示为n乘以(n-1)的阶乘,基础情况是0的阶乘为1。 function factorialRecursive(n) { if…

JS实现小手状

JS实现小手状

使用CSS cursor属性实现小手状 在网页中实现鼠标悬停时显示小手形状,最简单的方法是使用CSS的cursor属性。该属性可以直接设置为pointer,浏览器会自动渲染为手型图标。 .click…

JS实现跳表

JS实现跳表

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