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

总结

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

相关推荐
程序员Sunday几秒前
Flex 和 Grid 有什么区别?一维布局、二维布局怎么选?
前端·css·面试
Jlzn88883 分钟前
华南PACK线自动化率怎么统计才靠谱
前端·javascript·自动化
拖孩23 分钟前
AI 时代,个人开发者到底能不能靠一个小程序赚到钱
前端·后端·微信小程序
Hilaku24 分钟前
ERP选型时不问MCP,等于默认三年后再付一次集成费!
前端·javascript·程序员
程序人生88825 分钟前
几百张固定位置扫描件如何离线批量清?DocConverter Web 批量去水印链路
前端
deli00726 分钟前
一个汉字三种编码:UTF-8、GBK、UTF-16 逐字节对比实测
前端
庖丁解牛35 分钟前
第二课:把代码保存成网页 + 认识变量 (2)
前端
代码猎人35 分钟前
怎么开发一个Vue3项目
前端
梦里寻码36 分钟前
从 0 到 1 用 NestJS + LangChain 搭一套可售卖的 SaaS AI 客服:挂件一行代码接入,知识库秒变 SEO 帮助中心
前端·后端·github
爱喝水的小周36 分钟前
实验十一 Vuex 实现王者荣耀后台比赛管理系统
前端·css·html