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 弹性布局快速入门
Jun 06 HTML / CSS
CSS3 RGBA色彩模式使用实例讲解
Apr 26 HTML / CSS
CSS3制作缩略图的详细过程
Jul 08 HTML / CSS
详解HTML5新增标签
Nov 27 HTML / CSS
教你如何一步一步用Canvas写一个贪吃蛇
Oct 22 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
Jul 22 HTML / CSS
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
Nov 05 HTML / CSS
2014年圣诞节倒计时网页的制作过程
Dec 05 HTML / CSS
html5的canvas方法使用指南
Dec 15 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
Oct 23 HTML / CSS
使用phonegap进行提示操作的具体方法
Mar 30 HTML / CSS
使用canvas对video视频某一刻截图功能
Sep 25 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
php使用ICQ网关发送手机短信
2013/10/30 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
php使用crypt()函数进行加密
2017/06/08 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
Python制作简易注册登录系统
2016/12/15 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
护士求职自荐信范文
2014/03/19 职场文书
创意婚礼策划方案
2014/05/18 职场文书
最常使用的求职信
2014/05/25 职场文书
活动简报范文
2015/07/22 职场文书
文艺委员竞选稿
2015/11/19 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
使用 Apache 反向代理的设置技巧
2022/01/18 Servers