在css调整大小后单击画布中的实际单击位置
Get click the actual click location in canvas after a css resizing
首先,让我们假设我有以下画布:<canvas id="can" width="400" height="200" />
。然后,我需要用width: 100%; height: auto;
调整它的大小,以适合我的响应容器。现在,假设我的画布宽度是800。问题是,每次当我尝试获取点击事件的位置(x, y)时,我得到的是相对于实际鼠标位置的坐标。
明确一点,如果我点击画布的底部边缘,得到的位置不是(400,200)而是(800,400)
已经在网上搜索解决方案,但我找不到我的具体问题,无论是jQuery或香草javascript似乎有一个简单的方法来解决这个问题。我想到的唯一解决方案是在DOM中设置的实际画布尺寸与缩放后的宽度和高度之间使用一种数学关系,但我真的不知道如何。
一种方法是在画布元素上使用offsetLeft
和offsetTop
属性来将鼠标坐标转换为画布。它的工作方式是这样的:
function(clickEvent) {
var canvas = document.getElementById("can")
var transformedClickX = clickEvent.pageX - canvas.offsetLeft;
var transformedClickY = clickEvent.pageY - canvas.offsetTop;
...
}
相关文章:
- 使用单击函数中的jQuery切换元素
- 单击事件中的ajax请求后重定向
- 在单击事件中,第一次单击时激发代码一次,其余代码在所有单击时运行
- 如何防止用户使用javascript或jquery在链接中单击鼠标中键
- 单击angularjs中的另一个控制器时重新加载控制器
- 如果单击画布中的图像,则发出警报
- 通过动态创建数组名称在单击函数中引用 javascript 数组
- 使用 JQuery 在单击表中的 tr 时创建弹出窗口
- 单击列表中的引导输入按钮将禁用其他按钮
- this.offset不是单击函数中的函数
- 为什么不是't单击事件中返回的数组的总和
- 如何根据单击块中的哪个项目来渲染不同版本的分部
- 仅单击一行中的一个项目
- 如何通过单击javascript中的按钮来修改输入数字字段
- 单击页面中的任何按钮时,使用Jquery file Upload时都会打开文件对话框
- 如何通过单击HTML中的按钮关闭当前选项卡
- 如何在单击事件中追加数据来自数据表
- 通过单击Javascript中的nextdate按钮,可以增加日期、日期、月份和年份
- 单击javascript中的按钮运行python脚本
- 如果在javaScript中的按钮单击事件中调用两个函数会发生什么