美文网首页
HTML5 drag & drop --- 初期尝试

HTML5 drag & drop --- 初期尝试

作者: 纳克贝斯手 | 来源:发表于2017-11-08 15:50 被阅读0次

HTML5:drag & drop API

绑定在拖拽目标
Evnet Description
dragstart 当用户开始拖拽一个元素或者一个文本选取区块的时触发
drag 当用户正在拖拽一个元素或者一个文本选取区块的时触发
dragend 当用户结束拖拽一个元素或者一个文本选取区块的时触发
绑定在放置目标
Evnet Description
dragenter 当一个元素或文字选取区块被拖曳移动进入一个有效的放置目标时触发
dragover 当一个元素或文字选取区块被拖曳移动经过一个有效的放置目标时触发
dragleave 当一个元素或文字选取区块被拖曳移动离开一个有效的放置目标时触发
dragexist 当一个元素不再是被选取中的拖曳元素时触发
drop 当一个元素或文字选取区块被放置至一个有效的放置目标时触发

实操

效果图

编写代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>HTML5 drag and drop</title>
    <style type="text/css">
        *{
            padding: 0;
            margin: 0;
        }
        #main{
            width: 300px;
            height: 200px;
            box-sizing: border-box;
            padding: 10px;
            margin: 10px;
            border:2px solid #fd4d4d;
        }
        .list{
            margin: 10px;
            font-size: 0;
        }
        .list li,
        #main li{
            display: inline-block;
            width: 30px;
            height: 30px;
            margin-right: 10px;
            line-height: 30px;
            border-radius: 100%;
            text-align: center;
            background: #58a;
            color: #fff;
            font-size: 16px;
        }
    </style>
</head>
<body>
    <ul id="main"></ul>
    <ul class="list">
        <li>A</li>
        <li>B</li>
        <li>C</li>
    </ul>

</body>
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript">

        $(function(){

            var ELE = '';

            var NUB = '';

            //拖放元素设置draggable属性
            $('.list').find('li').attr('draggable', true);

            //拖放元素绑定dragstart, dragend事件
            $('.list').on({

                'dragstart': function(e){

                    ELE = $(this);

                    NUB = ELE.parents().children('li').length;

                    var _data = parseDom(e.target);

                    //dataTransfer.setData储存数据(使用 jquery 时要加上originalEvent)
                    e.originalEvent.dataTransfer.setData("text/plain", _data);

                    ELE.css('opacity', '0.5');

                },
                'dragend': function(e){

                    $('.list').find('li').length ===  NUB?ELE.css('opacity', '1'):'';

                }

            }, 'li');

            //目标元素绑定dragover, drop事件
            $('#main').on({

                'dragover': function(e){

                    e.originalEvent.preventDefault();  

                },
                'drop': function(e){

                    e.originalEvent.preventDefault();

                    //dataTransfer.getData读取数据
                    var _ele = e.originalEvent.dataTransfer.getData("text/plain");  

                    $(this).append(_ele);

                    ELE.remove();

                }

            });

        });

        //DOM转string
        function parseDom(node) {

           var tmpNode = document.createElement( "div" );  

            tmpNode.appendChild( node.cloneNode( true ) );  

            var str = tmpNode.innerHTML;  

            tmpNode = node = null;  

            return str;  

        };

    </script>
</html>

总结

drag & drop 带来的应用场景,远不止这些,还有待探索。

相关文章

  • HTML5 drag & drop --- 初期尝试

    HTML5:drag & drop API 绑定在拖拽目标 绑定在放置目标 实操 编写代码 总结 drag & d...

  • HTML5 拖放笔记

    HTML5拖放(Drag 和 Drop) 拖放(Drag 和 drop)是 HTML5 标准的组成部分。 拖放 拖...

  • HTML5拖放

    1、HTML5 拖放(Drag 和 Drop) 拖放(Drag 和 drop)是 HTML5 标准的组成部分。 拖...

  • HTML5 拖放(Drag 和 Drop)

    HTML5 拖放(Drag 和 Drop) 拖放(Drag 和 drop)是 HTML5 标准的组成部分。 将w3...

  • 控件拖拽

    JavaScript实现最简单的拖拽效果 HTML5 drag & drop 拖拽与拖放简介 基于HTML5 dr...

  • 谷歌官方笔记之 User Interface

    Drag and Drop [[1] developer.android.com ][Drag and Drop]...

  • vue-picture-drag

    一个用于在图片上拖动的组件 git git地址 安装 记录 drag & drop 开始时采用HTML5的drag...

  • 2018-04-28

    HTML5 canvas绘图 可以插入SVG 添加数学符号公式 drag和drop拖...

  • iOS Drag And Drop使用

    文章结构 drag and drop简介 tableView之Drag and Drop UITextView/U...

  • 简单使用 iOS 的 Drag and Drop

    理解 Drag and Drop 概述 Drag and Drop 是 Apple 在 WWDC 2017 上提出...

网友评论

      本文标题:HTML5 drag & drop --- 初期尝试

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