当前位置:首页 > JavaScript

js 实现拖拽

2026-02-02 11:14:29JavaScript

实现拖拽功能

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

js  实现拖拽

使用HTML5拖拽API

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

js  实现拖拽

<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)实现拖拽效果。

<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
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

利用vue实现拖拽

利用vue实现拖拽

使用 Vue 实现拖拽功能 原生 HTML5 拖拽 API Vue 可以结合 HTML5 的拖拽 API 实现基础拖拽功能。以下是一个简单示例: <template> <div…