JavaScript拖拽API的简单使用

演示效果:

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .father {
            display: flex;
        }

        #box1,
        #box2 {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 100px;
            height: 100px;
            border: 1px solid #000;
        }

        #box2 {
            margin-left: 100px;
        }
    </style>
</head>

<body>
    <div class="father">
        <div id="box1"></div>
        <div id="box2">
            <!-- 将图片设置为可拖拽状态 -->
            <img id="pic" draggable="true" src="./images/car.png">
        </div>
    </div>

    <script>
        const box1 = document.querySelector('#box1');
        const pic = document.querySelector('#pic');

        // 将鼠标指针悬停在box1元素上,并拖拽其他元素时
        box1.addEventListener('dragover', e => {
            e.preventDefault(); // 阻止默认行为
        })

        // 当拖放操作在目标元素上执行时触发
        box1.addEventListener('drop', e => {
            const id = e.dataTransfer.getData('text/plain'); // 获取拖拽数据
            e.target.appendChild(document.getElementById(id)); // 将拖拽的元素添加到目标元素中
        })

        // 拖放开始时触发
        pic.addEventListener('dragstart', e => {
            console.log('开始拖拽', e);
            e.dataTransfer.setData('text/plain', e.target.id); // 设置拖拽数据
        })

        // 拖放操作结束时触发
        pic.addEventListener('dragend', e => {
            console.log('结束拖拽', e);
        })
    </script>
</body>

</html>
相关推荐
qq_452396235 小时前
第二篇:《Go 开发环境搭建:SDK、IDE、Module 与 Hello World》
开发语言·ide·golang
半个落月5 小时前
用 LangChain JS 做可控写作实验:理解温度参数、提示词与异步调用
javascript·人工智能·后端
观远数据5 小时前
Excel到数据资产池:文件数据入湖的治理规范怎么建
前端·javascript·excel
CoderWeen5 小时前
我写了个能一步步点着看的 Dijkstra 可视化项目(Vue3 + Leaflet + Generator)
前端·javascript·vue.js
天青色等烟雨..5 小时前
全流程ArcGISPro空间分析、三维建模、可视化及Python融合应用技术
开发语言·python
丰锋ff6 小时前
1.2 Qt常用基础类型
开发语言·qt
爱分享的程序猿-Clark6 小时前
【前端分享】vue开发项目,如何实现 从A页面跳转到B页面,并传值!
前端·javascript·vue.js
冰暮流星6 小时前
javascript之String方法介绍
开发语言·javascript·ecmascript
nianniannnn7 小时前
Qt QMessageBox知识点
开发语言·数据库·qt
Hilaku7 小时前
2026 年前端大洗牌:React 服务端到 Vite 的底层重构
前端·javascript·程序员