应用台导航页
  • 主页
  • 博客
  • 知识库
  • 工作台
  • 集萃
  • 友链
  • 关于
获取点击事件在 canvas 内的位置
DOMcanvas

获取点击事件在 canvas 内的位置

技术
更新于 2023-08-04
— 747 字
返回
javascript
const canvas = document.getElementById('myCanvas');
canvas.addEventListener('click', function(event) {
const rect = canvas.getBoundingClientRect();
const x = event.clientX - rect.left;
const y = event.clientY - rect.top;
console.log(`(x: ${x}, y: ${y})`);
});

上面的代码没有考虑页面滚动的情况。在页面滚动时,event.clientX 和 event.clientY 返回的坐标将不再是相对于视口的坐标,而应该是相对于整个文档的坐标。

为了解决这个问题,我们需要加上一个偏移量来计算点击事件相对于 canvas 左上角的坐标。具体来说,可以使用 window.pageXOffset 和 window.pageYOffset 获取当前文档已经滚动的距离,并将其加到计算中。修改后的代码如下:

javascript
const canvas = document.getElementById('myCanvas');
canvas.addEventListener('click', function(event) {
const rect = canvas.getBoundingClientRect();
const x = event.clientX - rect.left - window.pageXOffset;
const y = event.clientY - rect.top - window.pageYOffset;
console.log(`(x: ${x}, y: ${y})`);
});
dors logoDors

Dors 是花野猫开发为知识工作者打造的数字花园应用,包含的博客、个人记事本、及其他实用功能。

花园

  • 花坛——博客
  • 果园——知识库

工坊——作者开发的实用工具

  • 小记
  • 秒切——一键按秒分割视频
  • 中国重点高校地理位置可视化网站
  • 中国行政区划数据查询平台
  • excel 重命名工具

misc

  • 生活章程
  • 画廊
  • just have fun!

© 2022 - present. All Rights Reserved.滇ICP备2025063395号-1

花野猫打造