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

总结

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

相关推荐
白中白121383 分钟前
Vue系列-3
前端·javascript·vue.js
沛沛老爹3 分钟前
Vue3+TS实战:基于策略模式的前端动态脱敏UI组件设计与实现
前端·ui·vue3·数据安全·策略模式·动态渲染·前端脱敏
陈随易9 分钟前
CDN的妙用,隐藏接口IP,防DDOS攻击
前端·后端·程序员
明月_清风10 分钟前
单点登录(SSO)在前端世界的落地形态
前端·安全
九丝城主14 分钟前
1V1音视频对话2--Web 双浏览器完整通话测试(强制 relay)
前端·音视频
C澒14 分钟前
以微前端为核心:SLDSMS 前端架构的演进之路与实践沉淀
前端·架构·系统架构·教育电商·交通物流
明月_清风16 分钟前
OAuth2 与第三方登录的三个阶段(2010–至今)
前端·安全
We་ct16 分钟前
LeetCode 138. 随机链表的复制:两种最优解法详解
前端·算法·leetcode·链表·typescript
dcmfxvr18 分钟前
【无标题】
java·linux·前端
SoaringHeart36 分钟前
Flutter 顶部滚动行为限制实现:NoTopOverScrollPhysics
前端·flutter