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();
}

总结

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

相关推荐
天蓝色的鱼鱼1 小时前
从“死了么”到“我在”:用uniCloud开发一款温暖人心的App
前端·uni-app
小徐_23331 小时前
uni-app 组件库 Wot UI 的 AI 友好型编程指南
前端·uni-app
HelloReader1 小时前
Flutter Widget 基础手把手教你创建自定义组件(二)
前端
Hilaku1 小时前
在 HTTP/3 普及的 2026 年,那些基于 Webpack 的性能优化经验,有一半该扔了
前端·javascript·面试
前端付豪1 小时前
AI 数学辅导老师项目构想和初始化
前端·后端·python
HelloReader1 小时前
从零创建你的第一个 Flutter 应用(一)
前端
程序员阿峰1 小时前
别再写JS监听滚动了!一行CSS搞定导航固定+通讯录效果(附3个案例)
前端
wordbaby1 小时前
前端进阶:小程序 Canvas 2D 终极指北 — 给图片优雅添加水印
前端·canvas
树上有只程序猿2 小时前
OpenClaw虽香,但不是人人都养得起“小龙虾
前端·openai
SuperEugene2 小时前
Vue3 + Element Plus 全局 Message、Notification 封装与规范|Vue生态精选
前端·javascript·vue.js