【日常记录】【JS】浏览器本身的取色器

1、介绍

EyeDropper 接口表示一个拾色器工具的实例,用户可以打开并使用它从屏幕上选择颜色。 (他还是一个实验性的技术,存在兼容性问题)

EyeDropper MDN 介绍

2、打开拾色器并且取样

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <img src="https://picsum.photos/200?1" alt="">
  <button id="btn">开始取色</button>
  <div class="box" style="width: 200px;height: 200px;border: 1px solid red;">实时更新颜色区域</div>
  <script>
    let btnEl = document.querySelector('#btn');
    let boxEl = document.querySelector('.box')
    btnEl.addEventListener('click', async function () {
    // 1、new 一个实例
    // 2、调用open 方法
      const eyeDropper = new EyeDropper();
      try {
        const res = await eyeDropper.open();
        console.log('获取到了颜色', res);
        boxEl.style.background = res.sRGBHex;
      } catch (error) {
        console.log('用户取消了,按下了 esc 键');
      }
    })
  </script>
</body>

</html>

3、代码中止拾色器

在这里插入图片描述

  <img src="https://picsum.photos/200?1" alt="">
  <button id="start-button">打开拾色器</button> <span id="result"></span>
  <script>
    document.getElementById("start-button").addEventListener("click", () => {
      const resultElement = document.getElementById("result");

      if (!window.EyeDropper) {
        resultElement.textContent = "你的浏览器不支持 EyeDropper API";
        return;
      }

      const eyeDropper = new EyeDropper();
      const abortController = new AbortController();

      eyeDropper
        .open({ signal: abortController.signal })
        .then((result) => {
          resultElement.textContent = result.sRGBHex;
          resultElement.style.backgroundColor = result.sRGBHex;
        })
        .catch((e) => {
          resultElement.textContent = '代码的方式中止了';
        });

      setTimeout(() => {
        abortController.abort();
      }, 2000);
    });
  </script>

4、参考连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值