随笔记:HTML5之拖放

随笔记:HTML5之拖放

学习一下HTML5 拖放知识 — 2022年3月2号
  1. drag 释义:拖 拽
  2. drop 释义:投 丢
  3. 拖放是 HTML5 标准的组成部分:任何元素都是可拖放的。
  4. 拖放过程中会触发的事件
    1. 在拖动目标上触发事件(源元素):
      • ondragstart - 用户开始拖动元素时触发
      • ondrag - 元素正在拖动时触发
      • ondragend- 用户完成元素拖动后触发
    2. 释放目标时触发的事件:
      • ondragenter - 当被鼠标拖动的对象进入其容器范围内时触发此事件
      • ondragover- 当某被拖动的对象在另一对象容器范围内拖动时触发此事件
      • ondragleave - 当被鼠标拖动的对象离开其容器范围内时触发此事件
      • ondrop - 在一个拖动过程中,释放鼠标键时触发此事件
  5. code example
    1. //样式
      <style>
              #div1 {
                  margin-top: 20px;
                  border: 1px solid black;
                  width: 200px;
                  height: 100px;
              }
      
              #div2 {
                  border: 1px solid red;
                  width: 200px;
                  height: 100px;
              }
       </style>
       
       //结构
       <body>
          <!-- 为了把一个元素设置为可拖放,请把 draggable 属性设置为 true-->
          <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)">
              <img id="img" draggable="true" src="./d1160924ab18972bb8370c8bd4bb72809f510ae4.jpeg" width="100" height="100"
                  ondragstart="drag(event)">
          </div>
          <div id="div1" ondragover="allowDrop(event)" ondrop="drop(event)">
      
          </div>
          <script>
              /* 
                  拖放事件
               */
              // 开始拖放 - 拖放的内容  ondragstart和setData
              function drag(ev) {
                  console.log(ev, ev.target.id, '点击并移动鼠标 - 拖放开始')
                  // dataTransfer.setData() 方法设置被拖动数据的数据类型和值:
                  ev.dataTransfer.setData("text", ev.target.id);
              }
              // 结束拖放 - 拖到何处 ondragover
              function allowDrop(ev) {
                  ev.preventDefault();
              }
              // 进行放置 - ondrop
              function drop(ev) {
                  console.log('鼠标放开,发生 drop 事件');//放置到能接收移动的位置
                  ev.preventDefault();
                  // 通过 dataTransfer.getData() 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据
                  var data = ev.dataTransfer.getData("text");
                  ev.target.appendChild(document.getElementById(data));
              }
          </script>
      </body>
      
  6. 实现思路
    1. 把元素设置为可缩放,给要拖放的元素设置属性:draggable=“true”
    2. 拖放的内容:规定当元素被拖动时发生的事情
      1. ondragstart事件:规定拖动什么数据,方法传参为event(事件对象)
      2. event.dataTransfer.setData()方法设置被拖动数据的数据类型和值
        1. 上例中可拖拽的元素为ev.target.id就是 id(‘img’)
    3. 拖到何处 - ondragover
      1. 该事件规定被拖动的数据能够放置何处。
      2. event.preventDefault()的作用:默认地,数据/元素无法被放置到其他元素中。为了实现拖放,我们必须阻止元素的这种默认的处理方式。
    4. 进行放置 - ondrop
      1. 当放开被拖数据时,会发生drop事件。
      2. event.dataTransfer.getData()方法获得被拖动的数据,该方法将返回在 setData() 方法中设置为相同类型的任何数据

今日格言:掌握主动的感觉,体验主动的快乐,享受主动的人生,成就主动的成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值