启用元素拖动需设置draggable="true",通过dragstart、dragover、drop事件实现拖放逻辑,利用dataTransfer传递数据并调用preventDefault()防止默认行为。

HTML5 的拖放(Drag and Drop)API 让用户可以通过鼠标拖动元素从一个位置移动到另一个位置,广泛用于文件上传、列表排序、拼图游戏等场景。实现这一功能不需要额外的库,原生 JavaScript 就能完成。
要让一个元素可以被拖动,需设置其 draggable="true" 属性,尤其是图片、链接默认可拖动,其他元素如 div、span 需手动开启。
示例:<div id="dragElement" draggable="true" style="padding: 20px; background: #eee;">拖动我</div>
拖放过程涉及多个事件,关键包括:
立即学习“前端免费学习笔记(深入)”;
基本事件绑定示例:
const dragEl = document.getElementById('dragElement');
const dropZone = document.getElementById('dropZone');
dragEl.addEventListener('dragstart', (e) => {
e.dataTransfer.setData('text/plain', '这是拖动的数据');
});
dropZone.addEventListener('dragover', (e) => {
e.preventDefault(); // 必须阻止默认行为
});
dropZone.addEventListener('drop', (e) => {
e.preventDefault();
const data = e.dataTransfer.getData('text/plain');
dropZone.textContent = data;
});
dataTransfer 对象是拖放的核心,用于在拖动过程中传递数据。
text/plain
例如,拖动时显示复制图标:
dragEl.addEventListener('dragstart', (e) => {
e.dataTransfer.setData('text/plain', dragEl.id);
e.dataTransfer.effectAllowed = 'copy';
});
dropZone.addEventListener('dragover', (e) => {
e.preventDefault();
e.dataTransfer.dropEffect = 'copy'; // 显示复制光标
});
拖放 API 还支持文件操作。将文件从桌面拖入浏览器时,在 drop 事件中可通过 e.dataTransfer.files 获取 FileList。
dropZone.addEventListener('dragover', (e) => e.preventDefault());
dropZone.addEventListener('drop', (e) => {
e.preventDefault();
const files = e.dataTransfer.files;
if (files.length > 0) {
const file = files[0];
console.log('文件名:', file.name);
// 可结合 FileReader 读取内容或用 FormData 上传
}
});
基本上就这些。掌握 dragstart、dragover、drop 三个关键事件,再合理使用 dataTransfer,就能实现大多数拖放需求。注意始终调用 preventDefault() 避免浏览器默认行为中断操作。
以上就是HTML拖放API怎么实现_HTML5拖放DragDrop功能指南的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号