首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js拖动 demo

以下是一个使用纯 JavaScript 实现的简单拖动示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    #draggable {
      width: 100px;
      height: 100px;
      background-color: red;
      position: absolute;
      top: 50px;
      left: 50px;
      cursor: move;
    }
  </style>
</head>

<body>
  <div id="draggable"></div>

  <script>
    const draggable = document.getElementById('draggable');
    let isDragging = false;
    let offsetX = 0;
    let offsetY = 0;

    draggable.addEventListener('mousedown', (e) => {
      isDragging = true;
      offsetX = e.clientX - draggable.offsetLeft;
      offsetY = e.clientY - draggable.offsetTop;
    });

    document.addEventListener('mousemove', (e) => {
      if (isDragging) {
        draggable.style.left = e.clientX - offsetX + 'px';
        draggable.style.top = e.clientY - offsetY + 'px';
      }
    });

    document.addEventListener('mouseup', () => {
      isDragging = false;
    });
  </script>
</body>

</html>

这个示例中,创建了一个可拖动的红色方块。当鼠标按下时,记录下鼠标位置与方块左上角的偏移量,并将 isDragging 标记为 true 。在鼠标移动过程中,如果 isDraggingtrue ,则根据鼠标位置和偏移量更新方块的位置。当鼠标松开时,将 isDragging 标记为 false ,停止拖动。

这种拖动实现的优势在于简单直观,易于理解和修改。适用于一些简单的页面交互场景,例如拖动调整元素位置、拖放排序等。

可能出现的问题及解决方法:

  1. 拖动不流畅:可能是由于计算位置的方式不够优化,或者浏览器性能问题。可以尝试减少重绘和回流,优化计算逻辑。
  2. 跳出预期范围:检查偏移量的计算是否准确,以及边界条件的处理。
  3. 在不同浏览器中表现不一致:进行兼容性测试,针对不同浏览器做适当调整。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券