当前位置:首页 > JavaScript

js实现 拖动

2026-04-03 22:17:18JavaScript

实现拖动的核心步骤

监听鼠标事件 在可拖动元素上添加mousedown事件监听器,记录初始位置和鼠标位置。

element.addEventListener('mousedown', (e) => {
  isDragging = true;
  startX = e.clientX - element.offsetLeft;
  startY = e.clientY - element.offsetTop;
});

处理鼠标移动 在文档上添加mousemove事件,计算元素新位置并更新样式。

document.addEventListener('mousemove', (e) => {
  if (!isDragging) return;
  element.style.left = `${e.clientX - startX}px`;
  element.style.top = `${e.clientY - startY}px`;
});

结束拖动 通过mouseup事件清除拖动状态。

document.addEventListener('mouseup', () => {
  isDragging = false;
});

完整实现示例

const draggableElement = document.getElementById('draggable');
let isDragging = false;
let startX, startY;

draggableElement.addEventListener('mousedown', (e) => {
  isDragging = true;
  startX = e.clientX - draggableElement.offsetLeft;
  startY = e.clientY - draggableElement.offsetTop;
  draggableElement.style.cursor = 'grabbing';
});

document.addEventListener('mousemove', (e) => {
  if (!isDragging) return;
  draggableElement.style.left = `${e.clientX - startX}px`;
  draggableElement.style.top = `${e.clientY - startY}px`;
});

document.addEventListener('mouseup', () => {
  isDragging = false;
  draggableElement.style.cursor = 'grab';
});

注意事项

CSS准备 确保元素具有position: absoluteposition: fixed样式,并设置初始定位。

#draggable {
  position: absolute;
  cursor: grab;
  user-select: none;
}

性能优化 对于频繁触发的mousemove事件,可以考虑使用防抖或节流技术。

触摸屏支持 需要额外添加touchstarttouchmovetouchend事件处理程序以实现移动端兼容。

js实现 拖动

边界限制 可以通过添加位置判断逻辑来限制元素移动范围,防止拖出可视区域。

标签: 拖动js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

vue实现拖动

vue实现拖动

Vue 实现拖动的几种方法 使用 HTML5 原生拖放 API HTML5 提供了原生拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dro…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…