被拖动时触发 drag 事件到drop事件的执行步骤过程例子

<html>
<head>
    <meta charset="utf-8">
    <link href="https://developer.mozilla.org/static/build/styles/samples.37902ba3b7fe.css" rel="stylesheet"
          type="text/css">
    <style type="text/css">
        #draggable {
            width: 200px;
            height: 20px;
            text-align: center;
            background: white;
        }
        .dropzone {
            width: 200px;
            height: 20px;
            background: blueviolet;
            margin-bottom: 10px;
            padding: 10px;
        }
    </style>
    <title>dragstart - 示例:dropzone - code sample</title>
</head>
<body>
<div class="dropzone" style="">
    <div id="draggable" draggable="true" ondragstart="event.dataTransfer.setData('text/plain',null)" style="background: #0a0a0a">
        This div is draggable
    </div>
</div>
<div class="dropzone" style=""></div>
<div class="dropzone"></div>
<div class="dropzone"></div>
<script>
    var dragged;
    //1   start 会触发两次
    document.addEventListener("dragstart", function (event) {
        // 保存拖动元素的引用(ref.)
         dragged = event.target;
        console.log(dragged)
        // 使其字体变红
        event.target.style.color = 'red';
    }, false);
    /* 2  可拖动的目标元素会触发事件 */
    document.addEventListener("drag", function (event) {
    }, false);


    /*  3放下目标节点时触发事件 */
    document.addEventListener("dragover", function (event) {
        event.target.style.color = 'blue';
        // 阻止默认动作
        event.preventDefault();
    }, false);
    //4  6
    document.addEventListener("dragenter", function (event) {
        // 当可拖动的元素进入可放置的目标高亮目标节点
        if (event.target.className == "dropzone") {
            event.target.style.background = "purple";
        }
    }, false);
    //5
    document.addEventListener("dragleave", function (event) {
        // 当拖动元素离开可放置目标节点,重置其背景
        if (event.target.className == "dropzone") {
            event.target.style.background = "white";
        }
    }, false);
    //7
    document.addEventListener("drop", function (event) {
        // 阻止默认动作(如打开一些元素的链接)
        event.preventDefault();
        // 移动拖动的元素到所选择的放置目标节点
        if (event.target.className == "dropzone") {
            event.target.style.background = "yellow";
            console.log(dragged.parentNode)
            dragged.parentNode.removeChild(dragged);
            //上面的dragged与下面的dragged不是同一个对象
            event.target.appendChild(dragged);
        }
    }, false);
    //3   8
    document.addEventListener("dragend", function (event) {
        // 重置透明度
        event.target.style.opacity = .1;
    }, false);
</script>
</body>
</html>

 1用chrome对drag事件断点 原对象字体变红色,被拖动的对象字体也变红色 说明程序先执行了dragstart再执行drag

然后比较dragenter 以及dragover  字体变蓝色了

就是这么简单,大家可以根据上图以及代码进行测试   chrome浏览器按F12 点击Sources  右边的Event Listerer Breakpoints 

然后找到Drag/ drop 点击选项后 拖动事件进行测试。

引用 https://developer.mozilla.org/zh-CN/docs/Web/Events/drag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值