zoukankan      html  css  js  c++  java
  • HTML5-拖拽

    将div中元素拖到另一个 中

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .div1{
                 200px;
                height: 200px;
                border: 1px solid red;
                position: relative;
                margin-left:20px;
                float: left;
            }
            .div2{
                 200px;
                height: 200px;
                border: 1px solid blue;
                position: relative;
                margin-left:20px;
                float: left;
            }
            .div3{
                 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 p=document.querySelector("#pe");
        var div2=document.querySelector("#div2");
        var div1=document.querySelector("#div1");
        /*应用于被拖拽元素的事件
        *ondrag         应用于拖拽元素,整个拖拽过程都会调用--持续
         ondragstart    应用于拖拽元素,当拖拽开始时调用
         ondragleave    应用于拖拽元素,当鼠标离开拖拽元素时调用
         ondragend    应用于拖拽元素,当拖拽结束时调用*/
        p.ondragstart=function(){
            console.log("ondragstart");
        }
        p.ondragend=function(){
            console.log("ondragend");
        }
        p.ondragleave=function(){
            console.log("被拖拽元素:ondragleave");
        }
        p.ondrag=function(){
            //console.log("ondrag");
        }
    
        /*应用于目标元素的事件
        *ondragenter    应用于目标元素,当拖拽元素进入时调用
         ondragover    应用于目标元素,当停留在目标元素上时调用
         ondrop        应用于目标元素,当在目标元素上松开鼠标时调用
         ondragleave    应用于目标元素,当鼠标离开目标元素时调用*/
        div2.ondragenter=function(){
            console.log("ondragenter");
        }
        div2.ondragover=function(e){
            //console.log("ondragover");
            /*如果想触发ondrop事件,那么就必须在这个位置阻止浏览器的默认行为*/
            e.preventDefault();
        }
        /*浏览器默认会阻止ondrop事件:我们必须在ondragover中阻止浏览器的默认行为*/
        div2.ondrop=function(){
            console.log("ondrop");
            /*添加被拖拽的元素到当前目标元素*/
            div2.appendChild(p);
        }
        div2.ondragleave=function(){
            console.log("目标元素:ondragleave");
        }
    
        div1.ondragover=function(e){
            //console.log("ondragover");
            /*如果想触发ondrop事件,那么就必须在这个位置阻止浏览器的默认行为*/
            e.preventDefault();
        }
        div1.ondrop=function(){
            console.log("ondrop");
            /*添加被拖拽的元素到当前目标元素*/
            div1.appendChild(p);
        }
    </script>
    </body>
    </html>
    

      自由拖拽--通用方法--使用datatrasfer

    dataTransfer  :https://developer.mozilla.org/zh-CN/docs/Web/API/DataTransfer
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .div1{
                 200px;
                height: 200px;
                border: 1px solid red;
                position: relative;
                margin-left:20px;
                float: left;
            }
            .div2{
                 200px;
                height: 200px;
                border: 1px solid blue;
                position: relative;
                margin-left:20px;
                float: left;
            }
            .div3{
                 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 obj=null;//当前被拖拽的地元素
    
        /*应用于被拖拽元素的事件
        *ondrag         应用于拖拽元素,整个拖拽过程都会调用--持续
         ondragstart    应用于拖拽元素,当拖拽开始时调用
         ondragleave    应用于拖拽元素,当鼠标离开拖拽元素时调用
         ondragend    应用于拖拽元素,当拖拽结束时调用*/
        document.ondragstart=function(e){
            /*通过事件捕获来获取当前被拖拽的子元素*/
            e.target.style.opacity=0.5;
            e.target.parentNode.style.borderWidth="5px";
            obj= e.target;
            /*通过dataTransfer来实现数据的存储与获取
            * setData(format,data):
            * format:数据的类型:text/html   text/uri-list
            * Data:数据:一般来说是字符串值*/
            e.dataTransfer.setData("text/html", e.target.id);
        }
        document.ondragend=function(e){
            e.target.style.opacity=1;
            e.target.parentNode.style.borderWidth="1px";
        }
        document.ondragleave=function(e){
        }
        document.ondrag=function(e){
        }
    
        /*应用于目标元素的事件
        *ondragenter    应用于目标元素,当拖拽元素进入时调用
         ondragover    应用于目标元素,当停留在目标元素上时调用
         ondrop        应用于目标元素,当在目标元素上松开鼠标时调用
         ondragleave    应用于目标元素,当鼠标离开目标元素时调用*/
        document.ondragenter=function(e){
            console.log(e.target);
        }
        document.ondragover=function(e){
            /*如果想触发ondrop事件,那么就必须在这个位置阻止浏览器的默认行为*/
            e.preventDefault();
        }
        /*浏览器默认会阻止ondrop事件:我们必须在ondragover中阻止浏览器的默认行为*/
        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));
        }
        document.ondragleave=function(e){
        }
    </script>
    </body>
    </html>
    

      

  • 相关阅读:
    Struts2 高危漏洞补丁版本为: Struts 2.3.15.1
    java获取数据库的所有列名和对应的数据库类型
    spring html特殊字符操作
    spring中文乱码过滤器
    MD5加密类方法
    json操作json类型转换
    java去掉jsp标签内容的方法
    使用java发送邮件sp自动发送邮件方法
    过剩数
    枚举全排列
  • 原文地址:https://www.cnblogs.com/eadela/p/11322178.html
Copyright © 2011-2022 走看看