html5拖拽

1.在H5中实现了拖拽技术,允许用户在网页内部拖拽以及浏览器与其他应用程序之间的拖拽,通过拖拽可以传递数据。
拖动事件:dragstart、drag、dragend
放置事件:dragenter、dragover、drop
拖拽事件流:
当拖动一个元素放置到目标元素上的时候将会按照如下顺序依次触发
dragstart->drag->dragenter->dragover->drop->dragend
-----------------------------------------------------------------------
2.在拖拽事件中,我们可以通过DataTransfer来实现数据交互,通过event.dataTransfer来获取DataTransfer实例
方法:setData、getData、clearData

例子

<body>
    <div class="parent"></div>
    <div class="child" draggable="true" id="one">1</div>
    <div class="child" draggable="true" id="two">2</div>
    <div class="child" draggable="true" id="three">3</div>
    <div class="child" draggable="true" id="four">4</div>
</body>
window.onload = function () {
      var childs = document.querySelectorAll('.child');
      var parent = document.querySelector('.parent');
      // console.log(childs);
      childs = Array.from(childs);
      childs.forEach((item, index) => {
        // 开始拖放
        item.ondragstart = function (event) {
          console.log('ondragstart');
          // console.log(event);
          event.dataTransfer.setData('id', item.id);
        }
        // 正在拖放
        item.ondrag = function () {
          console.log('ondrag');
        }
        // 拖放结束
        item.ondragend = function () {
          console.log('ondragend');
        }
        // console.log(item, index);
      });
      // parent放置事件
      // 进入目标元素
      parent.ondragenter = function () {
        console.log('ondragenter');
      }
      // 在目标元素内活动
      parent.ondragover = function (event) {
        console.log('ondragover');
        // 设置目标元素可放置
        event.preventDefault();
      }
      // 将拖放元素放置到目标元素内
      parent.ondrop = function (event) {
        console.log('ondrop');
        // 获取数据传输对象内的数据,通过数据获取节点,放置节点
        var id = event.dataTransfer.getData('id');
        //id="one"
        var dom = document.querySelector("#" + id);
        this.appendChild(dom);
        // 阻止冒泡
        event.stopPropagation();
      }

      document.body.ondragover = function (event) {
        event.preventDefault();
      }

      document.body.ondrop = function (event) {
        console.log('ondrop');
        // 获取数据传输对象内的数据,通过数据获取节点,放置节点
        var id = event.dataTransfer.getData('id');
        //id="one"
        var dom = document.querySelector("#" + id);
        this.appendChild(dom);
        event.stopPropagation();
      }

效果图:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值