美文网首页
HTML5 拖拽draggable

HTML5 拖拽draggable

作者: 飞鱼_JS | 来源:发表于2017-06-08 19:09 被阅读0次

属性

  • draggable 属性:就是标签元素要设置draggable=true,否则不会有效果。
<div title="拖拽我" draggable="true">列表1</div>

事件

//用在被拖拽元素上

  • ondragstart 事件:当拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上
  • drag:被拖动的元素在拖动过程中持续触发,此事件作用在被拖曳元素上
  • ondragend 事件:当拖拽完成后触发的事件,此事件作用在被拖曳元素上

//用在目标元素上

  • ondragenter 事件:当拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素上

  • ondragover 事件:拖拽元素在目标元素上移动的时候触发的事件,此事件作用在目标元素上

  • ondrop 事件:被拖拽的元素在目标元素上同时鼠标放开触发的事件,此事件作用在目标元素上

  • Event.preventDefault() 方法:阻止默认的些事件方法等执行。在ondragover中一定要执行preventDefault(),否则ondrop事件不会被触发。另外,如果是从其他应用软件或是文件中拖东西进来,尤其是图片的时候,默认的动作是显示这个图片或是相关信息,并不是真的执行drop。此时需要用用document的ondragover事件把它直接干掉。

  • Event.effectAllowed 属性:就是拖拽的效果。

对象

  • DataTransfer 对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer。
    dataTransfer对象的方法:

setData(format, data):在dataTransfer对象上储存数据。第一个参数format用来指定储存的数据类型,比如text、url、text/html等。
getData(format):从dataTransfer对象取出数据。

实例

<div id="box"></div>


    <div id="drag_box" draggable="true"></div>
    

    <script>
        //获取被拖动的元素、
        var dragBox = document.querySelector("#drag_box");
        //获取目标元素
        var box = document.querySelector("#box");
        //给目标元素绑定事件
        box.addEventListener("dragenter", function(){
            this.classList.add('over');
        }, false);
        box.addEventListener("dragleave", function(){
            this.classList.remove("over");
        }, false);
        box.addEventListener("dragover", function(e){
            e.preventDefault();  //阻止默认的动作
        }, false);

        box.addEventListener("drop", function(e){
            //把被拖拽的元素 放入目标元素            
        this.appendChild(document.getElementById(e.dataTransfer.getData('dragElement')));
            //样式恢复
            this.classList.remove("over");
        },false);
        //给被拖拽的元素绑定事件
        dragBox.addEventListener("dragstart", function(e){
            //把被拖拽的元素放入dataTransfer
            e.dataTransfer.setData('dragElement', this.id);
        }, false);

实例二,将电脑文件夹中的图片拖拽到页面当中去

<h3>请把文件夹中的图片拖到下面区域</h3>    
    <div id="box"></div>    
    <script>        
        //获取目标元素
        var box = document.querySelector("#box");
        //给目标元素绑定事件
        box.addEventListener("dragenter", function(){
            this.classList.add('over');
        }, false);
        box.addEventListener("dragleave", function(){
            this.classList.remove("over");
        }, false);
        box.addEventListener("dragover", function(e){
            e.preventDefault();  //阻止默认的动作
        }, false);
        box.addEventListener("drop", function(e){
            e.preventDefault(); //阻止浏览器默认行为
            console.log(e)
            //遍历FileList
            [].forEach.call(e.dataTransfer.files, function(itemFile){
                //读取文件
                readImage(itemFile);
            })
            this.classList.remove("over");  //恢复样式
        },false);
        /**
         * 读取图片
         * @param File  fileObj 
        */
        function readImage(fileObj) {
            //创建FileReader对象
            var frObj = new FileReader();

            //监听读取成功
            frObj.onload = function(){
                var img = document.createElement("img");
                img.src = frObj.result;
                document.querySelector("#box").appendChild(img);
            }
            //读取
            frObj.readAsDataURL(fileObj);
        }

相关文章

  • html5 拖拽API使用

    html5 dragAPI draggable属性(布尔值能否拖拽) onDragStart 开始拖拽 onDra...

  • HTML5 拖拽事件

    HTML5 拖拽事件图片自带拖拽功能其他元素也通过设置 draggable=true属性 实现拖拽功能 垃圾(拖拽...

  • 实现拖拽

    原生js实现 HTML5原生实现:拖拽draggable属性、DataTranfers对象

  • HTML5拖拽事件

    HTML5拖拽事件 1. 设置拖拽 图片自带拖拽功能其他元素可设置draggable属性 例子: 1.1. 拖拽元...

  • h5-API

    拖拽API 属性 draggable 设置为 draggable=true 可以被拖拽 拖拽事件 ondragst...

  • HTML5新特性 拖拽使用心得

    HTML5新特性 拖拽使用心得 本文主要介绍了拖拽和拖放的几个属性 先构建一个框架 draggable 为了使元素...

  • HTML5 拖拽draggable

    属性 draggable 属性:就是标签元素要设置draggable=true,否则不会有效果。 事件 //用在被...

  • Flutter-26- Draggable控件

    提供了强大的拖拽控件,可以灵活定制 Draggable Widget Draggable控件负责就是拖拽,父层使用...

  • H5新增API-元素拖拽

    元素拖拽要使用html5的新增属性draggable="true",实际上这个属性默认就是true,但是以防不兼容...

  • vue,iview遇到的问题(1)

    1 vue draggable 火狐拖拽搜索问题使用vue-draggable做字段拖拽排序,在谷歌浏览器上是没有...

网友评论

      本文标题:HTML5 拖拽draggable

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