JavaScript实现拖拽

JavaScript实现拖拽

使用mousedown, mousemove, mouseup事件

mousedown事件触发后,开始拖拽

mousemove时,需要通过event.clientX和clientY获取拖拽位置,并实时更新位置

mouseup时,拖拽结束

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Draggable Element</title>
  <style>
    .draggable {
      position: absolute;
      width: 200px;
      height: 200px;
      background-color: #f00;
      cursor: move;
    }
  </style>
</head>
<body>
  <div id="draggable" class="draggable"></div>

  <script>
    // 获取需要拖拽的节点
    var draggableNode = document.getElementById('draggable');

    // 初始化拖拽状态
    var isDragging = false;
    var offset = { x: 0, y: 0 };

    // 绑定 mousedown 事件
    draggableNode.addEventListener("mousedown", function(event) {
      // 设置拖拽状态为 true
      isDragging = true;

      // 计算鼠标相对于节点的偏移量
      offset.x = event.clientX - draggableNode.offsetLeft;
      offset.y = event.clientY - draggableNode.offsetTop;
    });

    // 绑定 mousemove 事件
    draggableNode.addEventListener("mousemove", function(event) {
      // 如果处于拖拽状态
      if (isDragging) {
        // 计算节点的新位置
        var left = event.clientX - offset.x;
        var top = event.clientY - offset.y;

        // 更新节点的位置
        draggableNode.style.left = left + "px";
        draggableNode.style.top = top + "px";
      }
    });

    // 绑定 mouseup 事件
    draggableNode.addEventListener("mouseup", function() {
      // 设置拖拽状态为 false
      isDragging = false;
    });
  </script>
</body>
</html>

通过上述代码可以实现一个简单的拖拽功能,复制可用。

相关推荐
To_OC22 分钟前
LC 22 括号生成:刷完这道题,我终于搞懂回溯剪枝了
javascript·算法·leetcode
小二·24 分钟前
Next.js 15 企业级实战:从项目搭建到CI/CD全链路(App Router + Server Components + Turbopack)
javascript·ci/cd·turbopack
web守墓人25 分钟前
【python】uv解决依赖安装缓慢的问题
开发语言·python·uv
像我这样帅的人丶你还26 分钟前
🚀大文件上传的那些事
前端·javascript·架构
To_OC31 分钟前
LC 39 组合总和:回溯入门必刷题,我踩过的两个坑都在这了
javascript·算法·leetcode
橘子星1 小时前
从零理解流式输出 —— 一个 Vue + DeepSeek 的前端实战
前端·javascript·人工智能
geovindu2 小时前
CSharp: Bridge Pattern
开发语言·后端·桥接模式·结构型模式
এ慕ོ冬℘゜2 小时前
深入 JavaScript BOM:掌握 window 对象的窗口控制魔法
开发语言·javascript·ecmascript
2501_941982052 小时前
企业微信二次开发:如何用 Python 搭建通用的 Webhook 实时消息接收
开发语言·python·企业微信
逝水无殇2 小时前
C# 特性详解
开发语言·后端·c#