JS实现简单的拖拽效果

拖拽是前端实现中比较常用的一种效果, HTML5 提供了较为强大的拖拽 API 支持,今天我们来实现一个简单的拖拽效果。

实现

html 复制代码
<div>
    <div id="source" ondragstart="dragstart_handler(event);" draggable="true">
        把我拖拽到下方啊!
    </div>
</div>
<div id="target" ondrop="drop_handler(event);" ondragover="dragover_handler(event);">目标区域</div>

稍微添加点样式:

css 复制代码
div {
    margin: 0em;
    padding: 2em;
}

#source {
    color: #009688;
    border: 1px solid #009688;
}

#target {
    border: 1px solid black;
}

JS脚本如下:

javascript 复制代码
function dragstart_handler(event) {
    console.log("dragStart");
    // 设置拖动的格式和数据::使用事件目标的 id 作为数据
    event.dataTransfer.setData("text/plain", event.target.id);
}

function dragover_handler(event) {
    console.log("dragOver");
    event.preventDefault();
}

function drop_handler(event) {
    console.log("Drop");
    event.preventDefault();
    // 获取拖放目标的 id 数据
    var data = event.dataTransfer.getData("text");
    event.target.appendChild(document.getElementById(data));
    event.dataTransfer.clearData();
}

总结

今天这只是个简单的示例,后续我们可以在此基础上实现更多的效果。

相关推荐
yy.y--14 分钟前
Java线程实现浏览器实时时钟
java·linux·开发语言·前端·python
Dontla20 分钟前
Python Streamlit介绍(开源Python Web应用框架,快速将Python脚本转换成交互式Web应用,适合数据科学和机器学习项目快速展示)
前端·python·开源
少云清40 分钟前
【UI自动化测试】12_web自动化测试 _验证码处理和cookie
前端·python·web自动化测试
linux_cfan1 小时前
2026版 WordPress 视频插件终极选型:知识付费创作者如何低成本打造专业在线课堂?
前端·javascript·音视频·html5
pas1362 小时前
46-mini-vue 实现编译 template 为 render 函数
前端·javascript·vue.js
木斯佳2 小时前
前端八股文面经大全:京东零售前端实习一面(2026-1-20)·面经深度解析
前端·状态模式·零售
zheshiyangyang2 小时前
前端面试基础知识整理【Day-8】
前端·面试·职场和发展
a1117762 小时前
优雅简历(html开源)
前端·开源·html
Cache技术分享2 小时前
330. Java Stream API - 处理 Optional 对象:像流一样优雅地使用 Optional
前端·后端
感性的程序员小王2 小时前
别再手撸架构图了!我写了个 AI 工具,把 Spring Boot 代码一键变成 Draw.io 流程图
前端·后端