H5 拖放

作者: 闫子扬 | 来源:发表于2017-10-12 15:39 被阅读0次

创建拖放对象

draggable 通过draggable告诉浏览器哪些元素需要实现拖拽功能。
有三个可选值:

  1. true:元素可以被拖拽。
  2. false:元素不能被拖拽。
  3. auto:浏览器自己判断元素是否能被拖拽(默认)

处理拖放事件

  1. 对象拖放事件
    dragstart:按下鼠标键并开始移动时触发。
    drag:在元素拖拽过程中持续触发————>相似与mousemove。
    dragend:元素拖拽停止时触发。

  2. 对象拖放事件流程
    ondragstart:设置被拖图片边框色。

     img.ondragstart = function(event){
         event.target.className = 'red';
     }
    

ondrag:显示被拖图片的alt。

    img.ondrage = function(event){
        div.innerHTML = event.target.alt;
    }

ondragend:边框色恢复原始状态。

    img.ondragend = function(event){
        event.target.className = '';
    }
  1. 投放区事件流程
    元素被拖动到有效的放置目标时,下列事件会依次发生:
    1. dragenter:当拖拽对象进入投放区时触发。
    2. dragover:拖拽对象在投放区内移动时持续触发。
    3. dragleave:元素被拖出了投放区时触发。
    4. drop:拖拽对象投放在投放区时触发。

虽然所有元素都支持放置目标事件,但这些元素默认是不允许放置的,需要重写事件的默认行为。

box.ondragenter = function(event){
    event.preventDefault();
}
box.ondragover = function(event){
    event.preventDefault();
}

在ondragover中一定要执行preventDefault()否则ondrop事件不会被触发。

dataTransfer对象方法

  • dataTransfer对象(event对象属性)
    该对象专门用于携带拖放过程中的数据。

  • dataTransfer对象--常用方法
    setData(数据格式,数据)
    将拖放元素的数据存入dataTranfer对象中
    getData(数据格式)
    读取存入dataTransfer对象中的数据

    数据格式常用值为"Text"或"URL"

      tgt.ondragstart = function(event){
          msg.innerHTML = event.target.alt;
          img = event.target;//存储拖拽图片
          event.dataTransfer.setData('text','hello world');
          event.dataTransfer.setDragImage(icon,400,300);
          event.dataTransfer.effectAllowed="all";
      }
      box.ondragenter = function(event){
          box.style.borderColor = "red";
      }
      box.ondragover = function(event){
          event.preventDefault();//阻止浏览器默认行为
          event.dataTransfer.dropEffect = "move";
      }
      box.ondrop = function(event){
          event.preventDefault();//阻止浏览器默认行为
          box.appendChild(img);
          var txt = event.dataTransfer.getData('text');
          alert(txt);
      }
    
  • dropEffect
    表示被拖动的元素能够执行哪种放置行为。
    可能的值:
    none:不能把拖动的元素放在这里。
    move:把拖动的元素移动到放置目标。
    copy:把拖动的元素复制到放置目标。
    link:放置目标会打开拖动的元素(有URL)

  • effectAllowed
    允许拖动元素的哪种dropEffect
    允许值:
    copyLink:允许值为copy和link的dropEffect
    copyMove:允许值为copy和move的dropEffect
    linkMove:允许值为link和move的dropEffect
    all:允许任意的dropEffect

  • 注意

    • dropEffect属性搭配effectAllowed属性使用
    • 在drgstart事件处理程序中设置effectAllowed属性
    • 在dragover事件处理程序中设置dropEffect属性
    • dropEffect的每个可能值都会导致光标显示为不同的符号
    • 需要说明的是,除非effectAllowed属性值为all,dropEffect与effectAllowed属性值必须保持一致,否则,将不能显示设置的拖放效果
  • files文件

    • dataTransfer.files:如果是拖放文件,则返回正在拖放的文件列表FileList。
    • FileReader:专门用于读取文件,FileReader接口提供一些读取文件的方法与一个包含读取结果的事件模型。
    • FileReader.readAsDataURL方法:参数为要读取的文件对象,将文件读取为DataUrl
    • FileReader.onload事件:当读取文件成功完成的时候出发此事件,在事件触发后,你可以通过this.result来获取读取的文件数据,如果是图片,将返回base64格式的图片数据。

分享

常用分享工具

  1. jiathis:http://www.jiathis.com/
  2. bshare:http://www.bshare.cn/
  3. 百度:http://share.baidu.com/

相关文章

  • H5拖放异步文件上传之二——上传进度监听

      上一篇《H5拖放+FormData接口+NodeJS,完整异步文件上传(一)》,我们走通了拖放文件上传的整个流...

  • HTML5拖放

    拖放 拖放是一种常见的特效---将某个对象拖到某个位置。在H5中,任何元素都都能拖放。 实例: 亲自试一试 实例解...

  • 原生的 HTML 5 拖拽与JavaScript File AP

    W3C中关于H5拖拽(拖放)的介绍 拖放(Drag 和 drop)是 HTML5 标准的组成部分拖放是一种常见的特...

  • H5拖放

    H5拖放 提到拖拽,我们都很熟悉,那么拖放呢?一字之差,代表的意义是不一样的,拖拽就是拉着走,拖放就是有拖,有放,...

  • h5图片拖放功能

    首先什么是html5拖放? 答:html5拖放是h5标准的组成部分 拖动开始: ondrapstart:调用一个函...

  • H5 拖放

    创建拖放对象 draggable 通过draggable告诉浏览器哪些元素需要实现拖拽功能。有三个可选值: tr...

  • H5 拖放事件详解

    拖放事件 H5的拖放事件提供了多个接口: 1、drag:当元素或者选中的文本被拖动时触发(每几百毫秒触发一次),应...

  • h5资源拖放

    什么是h5资源拖放呢? 答:就是将本地的图片直接拖放在屏幕上显示。 首先在页面中布局一块放置要被拖入的框框 对这个...

  • H5 元素拖放

    今天分享一个元素拖放的案例,注意:这个是H5新增的; 先放图一张: 代码:(一些API和细节都在代码注释里了)

  • H5 拖放 - 学习

    前言 一个典型的drag操作是这样开始的:用户用鼠标选中一个可拖动的(draggable)元素,移动鼠标到一个可放...

网友评论

      本文标题:H5 拖放

      本文链接:https://www.haomeiwen.com/subject/oacoyxtx.html