• HTML5--新增拖放事件(7)


    前言:

      这节课主要学习HTML5中新增的拖放事件(drag/drop)。

      拖放事件

        1.启用HTML5中,如果想拖拽元素,给元素添加draggable = 'true'的属性,图像和a标签默认是可以进行拖拽的。

        2.拖拽事件:

          1.应用于被拖拽元素 

             ondragstart:元素被拖拽开始时触发
                          ondrag:元素被整个拖拽过程都会触发
                          ondragend:拖拽结束时触发(鼠标释放)
             ondragleave:当鼠标位置离开拖拽元素(范围)时触发

          2.应用于目标元素

             ondragenter:被拖拽元素进入目标元素就触发
                               ondragover:当鼠标拖拽元素(悬浮)在目标元素上触发
                               ondrop:当鼠标在目标元素中松开被拖拽元素时触发
                               注意:
                               ondrop:浏览器会默认阻止此事件
                               解决方法:在ondragover中阻止浏览器的默认行为。e.preventDefault();阻止浏览器的默认行为。
                               ondragleave:鼠标位置离开目标元素(范围)触发。
     
        3.拖拽事件的通用方法:
                     所有的拖拽方法用document调用,用事件对象event中的target属性确定到底是哪个元素对象在调用方法。
        
        4.通过dataTransfer实现数据的存储和获取
                     e.dataTransfer(format, data);
                     format:数据的类型:text/html     text/uri-list
                     Data:数据:一般来说是字符串值。
                     存储数据的方法:
                          e.dataTransfer.setData("text/html", e.target.id);
                     获取数据的方法:
                          e.dataTransfer.getDate("text/html");
                     注意:
                          通过e.dataTransfer.setData存储的数据只能在drop事件中获取。

        拖放示例

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .div1{
                width: 200px;
                height: 200px;
                border: 1px solid red;
                position: relative;
                margin-left:20px;
                float: left;
            }
            .div2{
                width: 200px;
                height: 200px;
                border: 1px solid blue;
                position: relative;
                margin-left:20px;
                float: left;
            }
            .div3{
                width: 200px;
                height: 200px;
                border: 1px solid green;
                position: relative;
                margin-left:20px;
                float: left;
            }
            p{
                background-color: orange;
                margin-top: 5px;
            }
        </style>
    </head>
    <body>
    <div class="div1" id="div1">
        <!--在h5中,如果想拖拽元素,就必须为元素添加draggable="true". 图片和超链接默认就可以拖拽-->
        <p id="pe" draggable="true">试着把我拖过去</p>
        <p id="pe1" draggable="true">试着也把我拖过去</p>
    </div>
    <div class="div2" id="div2"></div>
    <div class="div3" id="div3"></div>
    <script>
        var id = null;
        document.ondragstart=function(e){
            /*通过事件捕获来获取当前被拖拽的子元素*/
            e.target.style.opacity=0.5;
            e.target.parentNode.style.borderWidth="5px";
            obj= e.target;
        }
        document.ondragend=function(e){
            e.target.style.opacity=1;
            e.target.parentNode.style.borderWidth="1px";
        }
    
        document.ondragover=function(e){
            /*如果想触发ondrop事件,那么就必须在这个位置阻止浏览器的默认行为*/
            e.preventDefault();
        }
        document.ondrop=function(e){
            /*添加元素*/
            e.target.appendChild(obj);
            /*通过e.dataTransfer.setData存储的数据,只能在drop事件中获取*/
    //        var id=e.dataTransfer.getData("text/html");
            /*console.log("id="+id);*/
    //        e.target.appendChild(document.getElementById(id));
        }
    </script>
    </body>
  • 相关阅读:
    成长篇之代码灵异事件
    idea快捷键
    java环境配置常用链接
    MySQL分区
    English 动词篇
    仿stl+函数模板
    java 数组复制
    拓扑排序(Topological Sorting)
    2017蓝桥杯第十题(k倍区间)
    翻译NYOJ
  • 原文地址:https://www.cnblogs.com/diweikang/p/8661575.html
Copyright © 2020-2023  润新知