html5拖拽应用记录及注意点


Posted in HTML / CSS onMay 27, 2020

下面通过代码给大家介绍html5拖拽应用记录,具体代码如下所示:

e.dataTransfer.setData("a","设置的值");
e.dataTransfer.getData("a");
function drop(e)
{
    <!--尝试console.log(e),这里能拿到好多你用得到的api-->
    e.dataTransfer.setData("a", e.target.id);
}

拖动元素

被拖动的元素上要加入入draggable="true"属性

一些注意点:

drop 必须配上 dragover,否则事件不生效

 

document.getElementById('right').ondragover = function (ev) {
    ev.preventDefault(); //阻止向上冒泡
}
document.getElementById('right').ondrop = function (ev) {
    ev.preventDefault(); //阻止向上冒泡
    console.log("放入");
}

react中使用事件必须是驼峰,例如:onDragOver

vue中在ui库组件上加的时候记得加 .native,例如:@drop.native

完整测试案例

<!DOCTYPE html>
<html lang="en">
<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 p=document.querySelector("#pe1");
    var div2=document.querySelector("#div2");
    var div3=document.querySelector("#div3");
    /*应用于被拖拽元素的事件
    *ondrag         应用于拖拽元素,整个拖拽过程都会调用--持续
     ondragstart    应用于拖拽元素,当拖拽开始时调用
     ondragleave    应用于拖拽元素,当鼠标离开拖拽元素时调用
     ondragend    应用于拖拽元素,当拖拽结束时调用*/
    p.ondragstart=function(e){
        console.log("开始");
        e.dataTransfer.setDate("a")
    }
    p.ondragend=function(){
        console.log("结束");
    }
    p.ondragleave=function(){
        console.log("离开目标");
    }
    p.ondrag=function(){
        // console.log("持续触发---111111");
    }
 
    /*应用于目标元素的事件
    *ondragenter    应用于目标元素,当拖拽元素进入时调用
     ondragover    应用于目标元素,当停留在目标元素上时调用
     ondrop        应用于目标元素,当在目标元素上松开鼠标时调用
     ondragleave    应用于目标元素,当鼠标离开目标元素时调用*/
    div2.ondragenter=function(){
        console.log("进入目标1");
    }
    div2.ondragover=function(e){
        console.log(e);
        console.log("在目标1中盘旋");
        //console.log("ondragover");
        /*如果想触发ondrop事件,那么就必须在这个位置阻止浏览器的默认行为*/
        e.preventDefault();
    }
    /*浏览器默认会阻止ondrop事件:我们必须在ondragover中阻止浏览器的默认行为*/
    div2.ondrop=function(){
        console.log("锁定目标1,降落");
        /*添加被拖拽的元素到当前目标元素*/
        div2.appendChild(p);
    }
    div2.ondragleave=function(){
        console.log("离开目标1");
    }

    div3.ondragenter=function(){
        console.log("进入目标2");
    }
 
    div3.ondragover=function(e){
        console.log("在目标2中盘旋");
        //console.log("ondragover");
        /*如果想触发ondrop事件,那么就必须在这个位置阻止浏览器的默认行为*/
        e.preventDefault();
    }
    div3.ondrop=function(){
        console.log("锁定目标2,降落");
        /*添加被拖拽的元素到当前目标元素*/
        div3.appendChild(p);
    }
    div3.ondragleave=function(){
        console.log("离开目标2");
    }
</script>
</body>
</html>

总结

到此这篇关于html5拖拽应用记录的文章就介绍到这了,更多相关html5拖拽应用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
css3实现多个元素依次显示效果
Dec 12 HTML / CSS
CSS3 对过渡(transition)进行调速以及延时
Oct 21 HTML / CSS
微信浏览器左上角返回按钮拦截功能
Nov 21 HTML / CSS
HTML5中canvas中的beginPath()和closePath()的重要性
Aug 24 HTML / CSS
IE支持HTML5的解决方法
Oct 20 HTML / CSS
html5中canvas学习笔记2-判断浏览器是否支持canvas
Jan 06 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
May 29 HTML / CSS
HTML5实现动画效果的方式汇总
Feb 29 HTML / CSS
HTML5头部标签的一些常用信息小结
Oct 23 HTML / CSS
详解HTML5中表单验证的8种方法介绍
Dec 19 HTML / CSS
html svg生成环形进度条的实现方法
Sep 23 HTML / CSS
CSS font-variation 可变字体的魅力(实例详解)
Mar 03 HTML / CSS
recorder.js 基于Html5录音功能的实现
May 26 #HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
May 26 #HTML / CSS
H5 video poster属性设置视频封面的方法
May 25 #HTML / CSS
html5中嵌入视频自动播放的问题解决
May 25 #HTML / CSS
HTML5 FileReader对象的具体使用方法
May 22 #HTML / CSS
HTML5 Blob对象的具体使用
May 22 #HTML / CSS
详解如何获取localStorage最大存储大小的方法
May 21 #HTML / CSS
You might like
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
Javascript中的数学函数
2007/04/04 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
js图片上传的封装代码
2017/08/01 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
python快速查找算法应用实例
2014/09/26 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
详解Python IO编程
2020/07/24 Python
德国拖鞋网站:German Slippers
2019/11/08 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
婚礼证婚人演讲稿
2014/09/13 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
南湾猴岛导游词
2015/02/09 职场文书
七一晚会主持词
2015/06/29 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
初三英语教学反思
2016/02/15 职场文书
一文搞懂Java中的注解和反射
2022/06/21 Java/Android