javascript - 当 Canvas 的高度超过屏幕的高度时(当滚动条出现时),如何在 Canvas (JavaScript)上测试鼠标检测

标签 javascript html canvas mouseenter mouseclick-event

当没有滚动条时,我可以在 Canvas 上测试鼠标坐标:

var mx = evt.clientX - canvas.offsetX
var my = evt.clientY - canvas.offsetY

但是,当我向下滚动网页并重新定位鼠标时,坐标会倾斜。

有什么建议吗?

最佳答案

听起来您正在尝试测试鼠标在 Canvas 上的位置(而不是鼠标在屏幕上的位置)。为此,即使存在滚动条,evt.offsetXevt.offsetY 也足够了。

请在此处查看实时演示,然后打开 JS 控制台,您将能够看到光标相对于 Canvas 的坐标:

var canvas = document.getElementsByTagName("canvas")[0];

canvas.onmousemove = function(evt) {
    var mx = evt.offsetX;
    var my = evt.offsetY;
    console.log(mx, my);
}
<canvas height="800" width="200" style="border: solid black 1px"></canvas>

关于javascript - 当 Canvas 的高度超过屏幕的高度时(当滚动条出现时),如何在 Canvas (JavaScript)上测试鼠标检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36962811/

相关文章:

javascript - 使用 jQuery 的 .load() 函数保持导入的文本文件的格式?

javascript - 如何在 Angular js中显示行内的行

javascript - 是什么原因导致这个: Uncaught TypeError: $ is not a function?

php - 如果我需要将外部 url 加载到我的网页,是否有 IFrame 的替代方案

javascript - 通过 JavaScript 使用 Canvas,如何在单击按钮后更改圆的半径?

javascript - 向每个 <span class> 添加一个 div (Greasemonkey)

javascript - 是否可以将 MediaRecorder API 与 html5 视频一起使用?

java - 在其余 Web 服务中获取下拉列表(<select> 标签)的选定值

javascript - 计算两个碰撞物体的重叠?

javascript - 在 javascript、canvas 中无需滚动即可获取整个图像