【发布时间】:2020-09-10 23:43:25
【问题描述】:
正如标题所示,当我拖动元素时,我的网站呈现出一种奇怪的效果。这只发生在 iPhone 上; 在桌面和 Android 浏览器上不会发生这种情况。
它是这样的:
我可以粘贴一个包含代码的 sn-p 来拖动元素,但我认为这不会有帮助。这似乎更像是我不知道的操作系统特定的事情。
有谁知道为什么会发生这种情况?
编辑:
作为一个答案要求它,这里是拖动的代码(多余的东西已被剪掉):
private dragStart(e: UIEvent): void {
e.preventDefault();
e.stopPropagation();
this.dragInitial = Point.extractPagePointFromUiEvent(e);
this.dragActual = this.dragInitial.clone();
document.ontouchmove = (e1: TouchEvent) => this.elementDrag(e1);
document.ontouchend = () => this.dragEnd();
}
private elementDrag(e: UIEvent) {
const p = Point.extractPagePointFromUiEvent(e);
const actualX = this.goalTile.offsetLeft - this.dragActual.x + p.x;
const actualY = this.goalTile.offsetTop - this.dragActual.y + p.y;
this.goalTile.style.left = actualX + "px";
this.goalTile.style.top = actualY + "px";
this.dragActual = p;
}
private dragEnd(): void {
document.ontouchend = null;
document.ontouchmove = null;
if (this.dragInitial.equals(this.dragActual)) return;
this.updateGoal();
}
【问题讨论】:
-
你是用画布还是什么的?检查您是否正确使用requestAnimationFrame
-
不是真的@Viney。只需拖动绝对定位的
<div>s,修改它们的style.top和style.left值。
标签: javascript css ios typescript