h5原生拖拽

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Title</title>
    <style>
        #drag-el {
            width: 100px;
            height: 100px;
            background-color: greenyellow;
        }
        #drop-el {
            width: 200px;
            height: 200px;
            background-color: antiquewhite;
        }
    </style>
</head>
<body>
<div id="drop-el"></div>
<div id="drag-el" draggable="true">
    <!-- <img src="logo.png" alt=""> -->
    被拖拽的元素
</div>
<script>
    window.onload = function () {

        var dropEl = $('#drop-el');
        var dragEl = $('#drag-el');

    //设置关联数据
        dragEl.addEventListener("dragstart", dragstartHandle);

    //禁止默认事件,使其可拖放,默认是不允许拖放的,除了图片和文字
        dropEl.addEventListener("dragenter", preventDefault);
        dropEl.addEventListener("dragover", preventDefault);
        //鼠标释放,在拖放目标上接受数据并处理
        dropEl.addEventListener("drop", dropHandle);

        function dropHandle(event) {
            event.preventDefault();//在Firefox 3.5+中,放置事件的默认行为是打开被放到放置目标上的URL,因此需要取消drop事件的默认行为,阻止它打开URL
            var data = event.dataTransfer.getData("Text");
            event.target.appendChild($("#" + data));
            console.log(event.target);
        }

        function dragstartHandle(event) {
            event.dataTransfer.setData("Text", event.target.id);
            console.log(event.target);
        }
        
        function preventDefault(event) {
            console.log(event.type);
            event.preventDefault();
        }

        function $(sel) {
            return document.querySelector(sel);
        }

    }
</script>
</body>
</html>

分享一个很简单的实例:

英雄选择

选择英雄后代码:

效果如下:

 

posted @ 2017-01-07 20:25  jefferyE  阅读(187)  评论(0编辑  收藏  举报