HTML5--拖动02-dragstart、drag、dragenter、dragover、dragleave、drop、dragend属性

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        div{
            width: 200px;
            height: 80px;
        }
        #fir{background-color: blue; }
        #sec{background-color: black;}
        #thr{background-color: chartreuse;}
        #d_img{width: 200px;height: 80px;}
    </style>
    <script type="text/javascript">
        var cont=0;
        var in_moving=0;
        /**--01--*/
        function f_ondragstart(e){
            document.getElementById("sp_start").innerHTML= e.target.id+":被拖元素,开始被拖动";
            //被拖动,就将拖动的元素,存入(setData)dataTransfer里面:键值对
            e.dataTransfer.setData("who", e.target.id);
            //--04--设置拖放过程中允许的效果(ondragstart中设置)
            e.effectAllowed="all";
        }
        function f_ondrag(e){
            cont++;
            document.getElementById("sp_moving").innerHTML= e.target.id+":被拖元素,被拖动过程中:"+cont;
        }
        function f_ondragenter(e){
            document.getElementById("sp_in").innerHTML= "进入:"+e.target.id;
        }
        /**--02--*/
        function f_ondragover(e){
            //进入,就设置可以拖放进来(设置不执行默认:【默认的是不可以拖动进来】)
            e.preventDefault();
            //--05--设置具体效果
            e.dataTransfer.dropEffect="copy";
            document.getElementById("sp_in_moving").innerHTML="进入:"+ e.target.id+":"+in_moving;
        }
        function f_ondragleave(e){
            document.getElementById("sp_leave").innerHTML="离开:"+ e.target.id
        }
        /**--03--*/
        function f_ondrop(e){
//            document.getElementById("sp_on").innerHTML="到达目标:"+ e.target.id;/**/
            //设置不执行默认:【默认的是不可以拖动进来】
            e.preventDefault();
            var who= e.dataTransfer.getData("who");
            //添加子节点
            document.getElementById(e.target.id).appendChild(document.getElementById(who));

            document.getElementById("sp_on").innerHTML=who+":到达目标:"+ e.target.id;
        }
        function f_ondragend(e){
            document.getElementById("sp_end").innerHTML="结束拖放:"+ e.target.id;
        }
    </script>
</head>
<body>
<!--拖放:
    拖动的对象,需要设置draggable属性为true(draggable="true"),
    a元素需要href,img元素需要src。
    1、被拖对象:dragstart事件,被拖动的元素,开始拖放触发
    2、被拖对象:drag事件,被拖放的元素,拖放过程中
    3、经过对象:dragenter事件,拖放过程中鼠标经过的元素,被拖放的元素“开始”进入其它元素范围内(刚进入)
    4、经过对象:dragover事件,拖放过程中鼠标经过的元素,被拖放的元素正在本元素范围内移动(一直)
    5、经过对象:dragleave事件,拖放过程中鼠标经过的元素,被拖放的元素离开本元素范围
    6、目标地点:drop事件,拖放的目标元素,其他元素被拖放到本元素中
    7、被拖对象:dragend事件,拖放的对象元素,拖放操作结束
 -->
</body>
<div id="fir" οndragenter="f_ondragenter(event)" οndragοver="f_ondragover(event)" οndragleave="f_ondragleave(event)" οndrοp="f_ondrop(event)">
</div>

<div id="sec" οndragenter="f_ondragenter(event)" οndragοver="f_ondragover(event)" οndragleave="f_ondragleave(event)" οndrοp="f_ondrop(event)">
</div>

<div id="thr" οndragenter="f_ondragenter(event)" οndragοver="f_ondragover(event)" οndragleave="f_ondragleave(event)" οndrοp="f_ondrop(event)">
</div>

<br>

<img id="d_img" src="imgs/img.jpg" draggable="true" οndragstart="f_ondragstart(event)" οndrag="f_ondrag(event)" οndragend="f_ondragend(event)">

<br>
<span id="sp_start"></span>
<br>
<span id="sp_moving"></span>
<br>
<span id="sp_in"></span>
<br>
<span id="sp_in_moving"></span>
<br>
<span id="sp_leave"></span>
<br>
<span id="sp_on"></span>
<br>
<span id="sp_end"></span>
</html>

 

转载于:https://www.cnblogs.com/zjsy/p/4740785.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在HTML中实现元素拖拽,可以使用HTML5中提供的拖放API。以下是一个简单的示例: 首先,在HTML中创建一个可以拖动的元素,例如一个 div 元素: ```html <div id="dragElement" draggable="true">拖动我</div> ``` 然后,在JavaScript中为该元素添加拖放事件的监听器: ```javascript var dragElement = document.getElementById("dragElement"); // 拖动开始时触发 dragElement.addEventListener("dragstart", function(event) { // 存储被拖动元素的ID event.dataTransfer.setData("text/plain", event.target.id); }); // 拖动结束时触发 dragElement.addEventListener("dragend", function(event) { // 可以在这里添加拖动结束后的操作 }); ``` 接下来,在另一个可放置元素中添加拖放事件的监听器: ```javascript var dropZone = document.getElementById("dropZone"); // 当拖动元素进入可放置区域时触发 dropZone.addEventListener("dragenter", function(event) { event.preventDefault(); // 防止默认行为 dropZone.classList.add("dragover"); // 添加样式 }); // 当拖动元素在可放置区域中移动时触发 dropZone.addEventListener("dragover", function(event) { event.preventDefault(); // 防止默认行为 }); // 当拖动元素离开可放置区域时触发 dropZone.addEventListener("dragleave", function(event) { dropZone.classList.remove("dragover"); // 移除样式 }); // 当拖动元素在可放置区域中释放时触发 dropZone.addEventListener("drop", function(event) { event.preventDefault(); // 防止默认行为 dropZone.classList.remove("dragover"); // 移除样式 // 获取被拖动元素的ID var dragElementId = event.dataTransfer.getData("text/plain"); // 将被拖动元素添加到可放置区域中 var dragElement = document.getElementById(dragElementId); dropZone.appendChild(dragElement); }); ``` 在上面的代码中,dropZone 是一个可放置元素,可以将被拖动的元素添加到其中。在拖动开始时,我们使用 dataTransfer.setData() 方法将被拖动元素的 ID 存储在 dataTransfer 对象中。在拖放结束时,我们可以通过 dataTransfer.getData() 方法获取被拖动元素的 ID。 注意,为了使元素能够被拖动,需要设置 draggable 属性为 true。同时,在拖动事件的监听器中需要调用 event.preventDefault() 方法,防止浏览器默认行为的发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值