• 拖拉事件


       var dragged;
    
        var f = document.getElementById('div3');
    
        document.getElementById('draggable').addEventListener("dragstart", function( event ) {
            // 保存被拖拉节点
            dragged = event.target;
            // 被拖拉节点的背景色变透明
            event.target.style.opacity = 0.5;
            // 兼容Firefox
            event.dataTransfer.setData('text/plain', 'anything');
        }, false);
    
        document.getElementById('draggable').addEventListener('dragend', function( event ) {
            // 被拖拉节点的背景色恢复正常
            event.target.style.opacity = '';
        }, false);
    
        f.addEventListener('dragover', function( event ) {
            // 防止拖拉效果被重置,允许被拖拉的节点放入目标节点
            event.preventDefault();
        }, false);
    
        f.addEventListener('dragenter', function( event ) {
            // 目标节点的背景色变紫色
            // 由于该事件会冒泡,所以要过滤节点
            if ( event.target.className == 'dropzone' ) {
                event.target.style.background = 'purple';
            }
        }, false);
    
        f.addEventListener('dragleave', function( event ) {
            // 目标节点的背景色恢复原样
            if ( event.target.className == 'dropzone' ) {
                event.target.style.background = "";
            }
        }, false);
    
        f.addEventListener('drop', function( event ) {
            // 防止事件默认行为(比如某些Elment节点上可以打开链接)
            event.preventDefault();
            if ( event.target.className === 'dropzone' ) {
                // 恢复目标节点背景色
                event.target.style.background = '';
                // 将被拖拉节点插入目标节点
                dragged.parentNode.removeChild( dragged );
                event.target.appendChild( dragged );
            }
        }, false);
    <div class="dropzone" id="div1">
           <div id="draggable" draggable="true" style="background-color: yellow">
          该节点可拖拉
      </div>
    </div>
    <br/>
    <br/>
    <br/>
    <div class="dropzone" id="div2"></div>
    <br/>
    <br/>
    <br/>
    <div class="dropzone" id="div3"></div>
    <br/>
    <br/>
    <br/>
     <div class="dropzone" id="div4"></div>

    dragover事件:拖拉到当前节点上方时,在当前节点上持续触发,该事件的target属性是当前节点。该事件与dragenter事件基本类似,默认会重置当前的拖拉事件的效果(DataTransfer对象的dropEffect属性)为none,即不允许放下被拖拉的节点,所以如果允许在当前节点drop数据,通常会使用preventDefault方法,取消重置拖拉效果为none。

    原文链接:http://javascript.ruanyifeng.com/dom/event-type.html

  • 相关阅读:
    【HDU 1060】Leftmost Digit
    【HLG 1572】表达式计算(后缀表达式+栈的应用)
    Vue CLI3 开启gzip压缩
    html元素呼吸效果
    前端实现在线预览pdf、word、xls、ppt等文件
    devServer proxy的使用
    7个基础js函数
    前端初中高级面试题1
    模仿头条导航的左右滚动效果
    angular基本入门教程
  • 原文地址:https://www.cnblogs.com/neverleave/p/6102435.html
Copyright © 2020-2023  润新知