当前位置:首页 > JavaScript

js实现吸色

2026-01-15 14:04:06JavaScript

使用Canvas实现吸色功能

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

const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const img = document.querySelector('img');

img.onload = function() {
  canvas.width = img.width;
  canvas.height = img.height;
  ctx.drawImage(img, 0, 0, img.width, img.height);
};

canvas.addEventListener('click', (e) => {
  const rect = canvas.getBoundingClientRect();
  const x = e.clientX - rect.left;
  const y = e.clientY - rect.top;
  const pixel = ctx.getImageData(x, y, 1, 1).data;
  const rgb = `rgb(${pixel[0]}, ${pixel[1]}, ${pixel[2]})`;
  console.log('Selected color:', rgb);
});

使用EyeDropper API实现吸色

现代浏览器支持EyeDropper API,提供更简单的吸色方式。调用window.EyeDropper接口打开拾色器,返回用户选择的颜色值。

if ('EyeDropper' in window) {
  const eyeDropper = new EyeDropper();
  eyeDropper.open()
    .then(result => {
      console.log('Selected color:', result.sRGBHex);
    })
    .catch(err => {
      console.error('EyeDropper error:', err);
    });
} else {
  console.log('EyeDropper API not supported');
}

获取DOM元素颜色值

对于页面上的DOM元素,可以通过getComputedStyle方法获取其计算后的样式颜色值。

const element = document.getElementById('target');
const styles = window.getComputedStyle(element);
const color = styles.getPropertyValue('color');
console.log('Element color:', color);

颜色格式转换

将获取的颜色值转换为不同格式,使用正则表达式或颜色转换库实现RGB、HEX、HSL等格式间的转换。

function rgbToHex(rgb) {
  const match = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
  if (!match) return rgb;

  const r = parseInt(match[1]).toString(16).padStart(2, '0');
  const g = parseInt(match[2]).toString(16).padStart(2, '0');
  const b = parseInt(match[3]).toString(16).padStart(2, '0');

  return `#${r}${g}${b}`.toUpperCase();
}

注意事项

Canvas方法受同源策略限制,跨域图片需要设置crossOrigin属性。EyeDropper API需要用户手势触发,不能在页面加载时自动调用。颜色值转换时需考虑透明度处理。

js实现吸色

标签: js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…