HTML5-拖拽-通用

HTML5拖拽

	在h5中。如果想拖拽元素,就必须为元素添加draggable="true".图片和超链接默认就可以拖拽

	ondrag          应用于拖拽元素,整个拖拽过程都会调用--持续触发
    ondragstart     应用于拖拽元素,当拖拽开始调用
    ondragleave     应用于拖拽元素,当鼠标离开拖拽元素时调用
    ondragend       应用于拖拽元素,当拖拽结束时调用

	ondragenter         应用于目标元素,当拖拽元素进入时调用
    ondragover          应用于目标元素,当停留在目标元素上时调用
    ondrop              应用于目标元素,当目标元素松开鼠标时调用
    ondragleave         应用于目标元素,当鼠标离开目标元素时调用

通过dataTransfer来实现数据的存储与获取
setData(format,data):
format:数据的类型: text/html text/uri-list
Data:数据:一般来说是字符串值

<!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>
        * {
            margin: 0;
            padding: 0;
        }
        
        .div1 {
            width: 200px;
            height: 200px;
            border: 1px solid red;
            position: relative;
            margin-left: 20px;
            float: left;
        }
        
        .div2 {
            width: 200px;
            height: 200px;
            border: 1px solid skyblue;
            position: relative;
            margin-left: 20px;
            float: left;
        }
        
        .div3 {
            width: 200px;
            height: 200px;
            border: 1px solid green;
            position: relative;
            margin-left: 20px;
            float: left;
        }
        
        p {
            background-color: orange;
            margin-top: 5px;
        }
    </style>
</head>

<body>
    <div class="div1" id="div1">
        <!-- 在h5中。如果想拖拽元素,就必须为元素添加draggable="true".图片和超链接默认就可以拖拽 -->
        <p id="pe" draggable="true">试着把我拖过去</p>
        <p id="pe1" draggable="true">也试着把我拖过去</p>
    </div>
    <div class="div2" id="div2"></div>
    <div class="div3" id="div3"></div>
    <script>
        
        document.ondragstart = function(e) {
            // 通过事件捕获来获取当前被拖拽的子元素
            e.target.style.opacity = 0.5; //改变拖拽体的背景半透明
            e.target.parentNode.style.borderWidth = "5px"; //改变父盒子的边框
            obj = e.target; //拿到拖拽的元素
            // 通过dataTransfer来实现数据的存储与获取
            // setData(format,data):
            // format:数据的类型: text/html        text/uri-list
            // Data:数据:一般来说是字符串值
            e.dataTransfer.setData("text/html", e.target.id);
        }
        document.ondragend = function(e) {
            e.target.style.opacity = 1; //改变拖拽体的背景半透明
            e.target.parentNode.style.borderWidth = "1px"; //改变父盒子的边框
        }
        document.ondragleave = function(e) {}
        document.ondrag = function(e) {}

        document.ondragenter = function(e) {}
        document.ondragover = function(e) {
                // 如果想触发ondrop事件,那么就必须在这个位置阻止浏览器的默认行为
                e.preventDefault();
            }
            // 浏览器默认会阻止ondrop事件:我们必须在ondragover中阻止浏览器的默认行为
        document.ondrop = function(e) {
        
            // 通过e.dataTransfer.setData存储数据,只能在drop事件中获取
            var id = e.dataTransfer.getData("text/html");
         
            e.target.appendChild(document.getElementById(id));
        }
        document.ondragleave = function(e) {}
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值