javascript - 为什么画布上的矩形会移位?
问题描述
我有一个画布,我在移动设备上测试,当我触摸画布的右侧时,矩形向右移动。我向左触摸的次数越多,矩形就越被绘制在它应该在的位置,恰好在触摸的位置。你知道为什么吗?画布的右边部分是窃听器,左边部分是好的。
<canvas id="layerDraw"
style="position: relative; width:100%; height:auto; margin- top:2%; z-index: 2; border:1px solid red;">
</canvas>
function touch(){
ld.addEventListener("touchstart", follow);
ld.addEventListener("touchmove", follow);
}
function follow(evt){
//evt.preventDefault();
var ctx = ld.getContext("2d");
var touches = evt.touches;
ctx.fillStyle = chos;
var x = touches[0].pageX -getOffsetLeft(ld);
var y = touches[0].pageY -getOffsetTop(ld);
ctx.fillRect(x-5,y, 20, 20);
}
function getOffsetLeft( elem ) {
var offsetLeft = 0;
do {
if (!isNaN(elem.offsetLeft)) {
offsetLeft += elem.offsetLeft;
}
} while( elem = elem.offsetParent );
return offsetLeft;
}
function getOffsetTop( elem ) {
var offsetTop = 0;
do {
if (!isNaN(elem.offsetTop)) {
offsetTop += elem.offsetTop;
}
} while( elem = elem.offsetParent );
return offsetTop;
}
解决方案
推荐阅读
- macos - 微星机械键盘在 MacBook Pro 上输入错误
- python - 使用python获取图像中的最高点(z)
- python-3.x - tf.reduce_mean 在 tf.function 中不起作用
- asp.net-mvc - 如何在多个网站 OpenIdConnect Azure AD B2C 中登录用户?
- flutter - 错误:在此小部件 Flutter [PropertiesGrid] 上方找不到正确的提供程序
- tcp - 当 RMI TCP 连接打开时,Jmeter 测试停止?
- python - 阅读卡片上的文字
- html - 边距底部自动取决于视图高度
- python - 在Python中删除文本文件中的行时结合两个“for”来集成进度条?
- javascript - 总是设置状态(如果我转到上一个屏幕或转到下一个屏幕,我想总是将状态设置为成功)