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 相关文章推荐
纯HTML+CSS3制作导航菜单(附源码)
Apr 24 HTML / CSS
Grid 宫格常用布局的实现
Jan 10 HTML / CSS
html5的新增的标签和废除的标签简要概述
Feb 20 HTML / CSS
html5跨域通讯之postMessage的用法总结
Nov 07 HTML / CSS
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
Dec 20 HTML / CSS
Web前端页面跳转并取到值
Apr 24 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
Jul 11 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
Jan 31 HTML / CSS
webView加载html图片遇到的问题解决
Oct 08 HTML / CSS
canvas 基础之图像处理的使用
Apr 10 HTML / CSS
css 中多种边框的实现小窍门
Apr 07 HTML / CSS
css布局巧妙技巧之css三角示例的运用
Mar 16 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代码
2006/12/06 PHP
PHP学习笔记之二
2011/01/17 PHP
浅谈php冒泡排序
2014/12/30 PHP
php下Memcached入门实例解析
2015/01/05 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
如何在python中实现随机选择
2019/11/02 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
经济实惠的名牌太阳镜和眼镜:Privé Revaux
2021/02/07 全球购物
乡镇安全生产月活动总结
2015/05/08 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
金陵十三钗观后感
2015/06/04 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书