摘要:使用取色器 EyeDropper API 我们可以在屏幕上拾取颜色,就跟ps的吸管功能一样。这是一个实验性的API,从Chrome 95才开始支持的。我们就来试用一下。首先,还是要判断一下浏...
使用取色器 EyeDropper API 我们可以在屏幕上拾取颜色,就跟ps的吸管功能一样。
这是一个实验性的API,从Chrome 95才开始支持的。
我们就来试用一下。
首先,还是要判断一下浏览器支不支持:
if ('EyeDropper' in window) {
console.log('取色器可以使用');
}使用时,先new一个 EyeDropper 对象,调用这个对象的open方法,就开始拾取颜色了,open方法返回的是一个promise对象,用户在点击屏幕拾取颜色后,会resolve,如果用户按esc键退出,会reject:
const eyeDropper = new EyeDropper(); const result = await eyeDropper.open();
下面我们来写一个最简单的例子,在网页中放一张图片,和一个按钮,点击按钮开始拾取颜色,用户拾取颜色后,把颜色值打印出来:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>取色器 EyeDropper API</title>
</head>
<body>
<img src="https://www.yzmask.com/uploads/202006/07/200607095436213.jpg" alt="" width="300" />
<button id="btn">开始取色</button>
<div>
取色后显示:<span id="color"></span>
</div>
<script>
if ('EyeDropper' in window) {
const eyeDropper = new EyeDropper();
const btn = document.getElementById('btn');
btn.addEventListener('click', async () => {
try {
const result = await eyeDropper.open();
console.log(result);
const colorHexValue = result.sRGBHex;
document.querySelector('#color').innerHTML = result.sRGBHex;
} catch (e) {
console.log('用户取消了取色');
}
})
}else{
alert('您的浏览器不支持EyeDropper取色器!');
}
</script>
</body>
</html>
