javascript - 拖拽 : Can't move to left and top

标签 javascript

我有一个元素,我想用鼠标移动它。

var troll = document.getElementById('troll');

troll.addEventListener('dragover', (e) => {
	e.preventDefault();
	e.target.style.left = e.clientX + 'px';
  e.target.style.top = e.clientY + 'px';
}, false);
img {
  width: 100px;
  cursor: pointer;
  position: absolute;
}
<div id="troll">
  <img src="http://images.mmorpg.com/features/7909/images/Troll.png" alt="Troll">
</div>

从左到右、从上到下都可以正常工作。并不完美,因为第一个 Action 就占据了整个空间,而且看起来并不顺利。但主要问题是我无法从右到左或从下到上移动。

如有任何帮助,我们将不胜感激。

最佳答案

您想要使用拖动而不是拖动,并使用一些逻辑来知道您要向上、向下、向左或向上移动。

var troll = document.getElementById('troll');

var X,Y = 0;

troll.addEventListener('drag', (e) => {
  e.preventDefault();
 
  if (e.clientX > X) 
  {
    e.target.style.left = X + 'px'; 
  }
  else if (e.clientX < X) 
  {
    e.target.style.left = X-- + 'px'; 
  }
 

  if (e.clientY > Y) 
  {
    e.target.style.top = Y + 'px'; 
  }
  else if (e.clientY < Y) 
  {
    e.target.style.top = Y-- + 'px'; 
  }


  
  X = e.clientX;
  Y = e.clientY;
  
 
}, false);
img {
  width: 100px;
  cursor: pointer;
  position: absolute;
}
<div id="troll">
  <img src="http://images.mmorpg.com/features/7909/images/Troll.png" alt="Troll">
</div>

关于javascript - 拖拽 : Can't move to left and top,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50204766/

相关文章:

javascript - Pusher,存在和私有(private)的不同身份验证?

javascript - 平滑缩放 Fabricjs 对象

javascript - 单击按钮添加新的自定义 div

javascript - 如何在单击特定 li 时隐藏所有 li 项目,并使用 jquery 在鼠标悬停时再次显示该项目下方的剩余 li 项目

javascript - 是否可以按需提出欧芹错误?

javascript - 如何访问包装 Angular 2 observable 的构造函数的范围?

javascript - 试图创建一个下拉菜单,但它不适用于 javascript

javascript - Express中的 `onconnect`事件在哪里?

javascript - 由于未捕获的引用错误,卡片未翻转

javascript - Semantic-ui 在模式对话框中忽略 e.preventDefault