当前位置:首页 > JavaScript

js 实现拖拽

2026-02-02 11:14:29JavaScript

实现拖拽功能

在JavaScript中实现拖拽功能可以通过HTML5的拖拽API或自定义事件监听来实现。以下是两种常见的方法:

使用HTML5拖拽API

HTML5提供了原生的拖拽支持,通过draggable属性和相关事件实现。

<div id="dragElement" draggable="true">拖拽我</div>
const dragElement = document.getElementById('dragElement');

dragElement.addEventListener('dragstart', (e) => {
    e.dataTransfer.setData('text/plain', e.target.id);
});

document.addEventListener('dragover', (e) => {
    e.preventDefault(); // 允许放置
});

document.addEventListener('drop', (e) => {
    e.preventDefault();
    const data = e.dataTransfer.getData('text/plain');
    const element = document.getElementById(data);
    e.target.appendChild(element);
});

自定义拖拽实现

通过监听鼠标事件(mousedownmousemovemouseup)实现拖拽效果。

js  实现拖拽

<div id="dragElement" style="position: absolute;">拖拽我</div>
const dragElement = document.getElementById('dragElement');
let isDragging = false;
let offsetX, offsetY;

dragElement.addEventListener('mousedown', (e) => {
    isDragging = true;
    offsetX = e.clientX - dragElement.getBoundingClientRect().left;
    offsetY = e.clientY - dragElement.getBoundingClientRect().top;
    dragElement.style.cursor = 'grabbing';
});

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

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

注意事项

  • 使用HTML5拖拽API时,确保目标元素的dragover事件调用preventDefault()以允许放置。
  • 自定义拖拽实现时,元素的position需设置为absoluterelative以便通过lefttop调整位置。
  • 拖拽过程中更新光标样式(如grabgrabbing)可提升用户体验。

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

相关文章

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 dragg…

js实现轮播

js实现轮播

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

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现密码

js实现密码

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

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js实现图片拖拽

js实现图片拖拽

实现图片拖拽的基本步骤 HTML 结构需要包含可拖拽的图片元素,并设置 draggable 属性为 true: <img id="dragImage" src="image.jpg" drag…