HTML5 拖拽draggable

2017-06-08  本文已影响0人  飞鱼_JS

属性

<div title="拖拽我" draggable="true">列表1</div>

事件

//用在被拖拽元素上

//用在目标元素上

对象

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);
        }

上一篇 下一篇

猜你喜欢

热点阅读