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 天前
【前端】Hammer.js 快速上手入门教程
开发语言·前端·javascript·vue·react·移动端开发·hammer.js
慧一居士1 天前
vue中 export default 和<script setup> 区别对比
前端·vue.js
do better myself1 天前
php导入关键词的脚本 300条分批导入
java·服务器·前端
亮子AI1 天前
【NestJS】为什么return不返回客户端?
前端·javascript·git·nestjs
DEMO派1 天前
前端如何防止接口重复请求方案解析
前端·vue.js·react.js·前端框架·angular
大风起兮云飞扬丶1 天前
web前端缓存命中监控方案
前端·缓存
恋爱绝缘体11 天前
CSS3 多媒体查询实例【1】
前端·css·css3
小二·1 天前
Python Web 开发进阶实战:无障碍深度集成 —— 构建真正包容的 Flask + Vue 应用
前端·python·flask
niucloud-admin1 天前
web 端前端
前端
胖者是谁1 天前
EasyPlayerPro的使用方法
前端·javascript·css