位置: IT常识 - 正文

原生JS的拖拽属性draggable(详解)(js实现拖拽选区的功能)

编辑:rootadmin
原生JS的拖拽属性draggable(详解) 摘要

推荐整理分享原生JS的拖拽属性draggable(详解)(js实现拖拽选区的功能),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js拖拽功能的实现,js实现元素拖拽,原生js的拖拽属性是什么,js拖拽会用到哪些事件,js实现元素拖拽,原生js的拖拽属性是什么,js实现元素拖拽,原生js的拖拽属性是什么,内容如对您有帮助,希望把文章链接给更多的朋友!

作为h5新增的属性draggable,它能够给与一切的html元素拖动的效果。而在这个属性之下,也有着关于拖动效果的各个方法。 而这一篇文章,主要就是说一下关于draggable属性的使用以及工作场景。

1.了解draggable属性的使用

对我来讲,我希望在学习一个知识的时候,最开始就有显而易见的效果,所以我先写一个能够让人感受到draggable属性作用的例子:

对于拖拽,常见的场景一定有两个角色:

(1)拖动的元素A (2)A被拖进的元素

现在我们在body中创建两个元素:

<body> <div id="Adiv" class="A"> A---拖拽的元素 </div> <div id="Bdiv" class="B"> B---A被拖进的元素 </div></body>

现在我们牢记两个点:

(1)拖动的元素要赋予draggable属性,属性值为true (2)被拖进的元素要在dragover和dragenter事件值中阻止默认行为。先不需要知道这两个事件是做什么的。我们就先这样写!

<body> <div draggable="true" id="Adiv" class="A"> A---拖拽的元素 </div> <div id="Bdiv" class="B"> B---A被拖进的元素 </div></body><script> Bdiv.ondragover = function(e){ e.preventDefault(); } Bdiv.ondragenter = function(e){ e.preventDefault(); }</script>

此时A元素就是可以拖入到B元素里面

(这个时候注意了,仅仅是效果上的拖入,不可能让A真正的成为B的子元素,松开鼠标后还是会恢复原样的)

2.拖动元素A的事件

Ok,现在知道了两个重要的角色A和B,现在我们先针对于A,在它拖动的过程中,我们可以控制的事件有哪些:

(1)dragstart方法:

该方法在按下鼠标并且移动鼠标时,会在A上触发该方法。同时鼠标的光标会变成禁用的样子,直到拖动到允许放置A的元素上,禁用的效果就会消失

而允许放置A的元素,就是刚刚说的在dragover和dragenter中阻止默认行为

现在我们用一个例子来演示这个方法,我希望在拖动A的时候,能让A本身变成黄色背景:

Adiv.ondragstart = function(){ this.style.backgroundColor = 'yellow' }原生JS的拖拽属性draggable(详解)(js实现拖拽选区的功能)

(2)drag方法

该方法发生在dragstart之后,只要时在拖动过程之中,该方法就会持续触发

Adiv.ondrag = function(){ console.log('drag事件'); }

(3)dragend方法

该方法是在拖动结束的时候触发,也就是当你拖拽后,松开鼠标的一瞬间触发。

上面的三个方法,就是针对于被拖拽的元素的。也就是赋予draggable属性为true的元素。

一般我们比较常用的方法就是dragstrat方法,通过在这个方法中将被推拽的元素进行保存下来,再进行后续的操作。

3.拖入元素B的事件

针对于拖入元素的事件,它不需要元素具有draggable属性,只要你想,任何元素使用这些方法都是可以的。但要记住上面所说的那两个方法,阻止事件默认行为。

(1)dragenter方法

该方法是指拖拽元素A,在拖入到B之中,B所触发的事件。当然,任何具有draggable属性为true的元素,拖入到B中,都会触发改事件。

切记,这里事件的触发不需要松开鼠标

现在我们用一个例子来说明,当A拖入到B中,我们希望A是真正成为B的子元素:

Bdiv.ondragenter = function(e){ e.preventDefault(); this.appendChild(Adiv); }

(2)dragover方法

该方法只要是,拖拽元素A在目标元素B中移动,就会持续触发。

Bdiv.ondragover = function(e){ console.log('dragover事件'); e.preventDefault(); }

(3)dragleave方法

该方法指的是拖拽元素A,在从目标元素B中离开的时候,会触发该方法

这里记住,一定是先进入到B,再离开B的时候触发该事件,也就是说要先触发dragenter方法,才能触发dragleave方法

(4)drop方法

该方法是指,拖拽元素A被放置了目标元素B中的时候触发,那它和dragenter方法的区别在于,该方法需要鼠标松开才会触发。而这个方法也是最常用的方法。

本文链接地址:https://www.jiuchutong.com/zhishi/300259.html 转载请保留说明!

上一篇:【YOLO系列】YOLOv2论文超详细解读(翻译 +学习笔记)(yolo s)

下一篇:10倍效能不是梦:“软件工程3.0”之下软件研发(10倍理论)

  • 苹果13录音功能在哪(苹果13录音功能如何操作手机)

    苹果13录音功能在哪(苹果13录音功能如何操作手机)

  • 哔哩哔哩青少年模式怎么关(哔哩哔哩青少年模式弹窗怎么关)

    哔哩哔哩青少年模式怎么关(哔哩哔哩青少年模式弹窗怎么关)

  • 拼多多上限了怎么办(拼多多上限了怎么取消)

    拼多多上限了怎么办(拼多多上限了怎么取消)

  • 手机夜晚拍灯光一条线(手机夜晚拍灯光怎么拍)

    手机夜晚拍灯光一条线(手机夜晚拍灯光怎么拍)

  • 小米手机扫一扫不见了(小米手机扫一扫快捷设置)

    小米手机扫一扫不见了(小米手机扫一扫快捷设置)

  • 腾讯会议可以共享屏幕吗(腾讯会议可以共享爱奇艺视频吗)

    腾讯会议可以共享屏幕吗(腾讯会议可以共享爱奇艺视频吗)

  • 计算机存储体系中存取速度最快的是(计算机存储体系结构图)

    计算机存储体系中存取速度最快的是(计算机存储体系结构图)

  • vsco为什么点不了注册(vsco为什么不能用了)

    vsco为什么点不了注册(vsco为什么不能用了)

  • oppo手机老是黑屏死机怎么办(oppo手机老是黑屏一闪一闪)

    oppo手机老是黑屏死机怎么办(oppo手机老是黑屏一闪一闪)

  • 苹果sn是什么意思(苹果sn就是序列号吗)

    苹果sn是什么意思(苹果sn就是序列号吗)

  • 手机显示lte是什么网络(手机显示lte是什么情况)

    手机显示lte是什么网络(手机显示lte是什么情况)

  • 无线手柄连接电视教程(无线手柄连接电脑玩游戏不好使)

    无线手柄连接电视教程(无线手柄连接电脑玩游戏不好使)

  • 为什么微信里没有漂流瓶了(为什么微信里没有视频号功能)

    为什么微信里没有漂流瓶了(为什么微信里没有视频号功能)

  • 华为watch gt2怎么充电(华为watchgt2怎么连接苹果手机)

    华为watch gt2怎么充电(华为watchgt2怎么连接苹果手机)

  • 华为nova5能不能分屏(华为nova5能不能遥控空调)

    华为nova5能不能分屏(华为nova5能不能遥控空调)

  • 手机没有储存卡会怎么样(手机没有储存卡能用吗)

    手机没有储存卡会怎么样(手机没有储存卡能用吗)

  • 智伴城市合伙人是什么(智伴老板叫什么名字)

    智伴城市合伙人是什么(智伴老板叫什么名字)

  • 怎样用ps制作宣传单页(怎样用ps制作宣传图片)

    怎样用ps制作宣传单页(怎样用ps制作宣传图片)

  • iphone6s支持快充吗(iphone6s支持快充吗?)

    iphone6s支持快充吗(iphone6s支持快充吗?)

  • qq浏览器怎么编辑文件(QQ浏览器怎么编辑照片)

    qq浏览器怎么编辑文件(QQ浏览器怎么编辑照片)

  • 苹果6s铃声怎么设置自己的歌(苹果6s铃声怎么静音)

    苹果6s铃声怎么设置自己的歌(苹果6s铃声怎么静音)

  • 华为mate20有home键吗(华为Mate20有无线充电吗)

    华为mate20有home键吗(华为Mate20有无线充电吗)

  • 猪八戒网如何接需求(猪八戒网怎么接活)

    猪八戒网如何接需求(猪八戒网怎么接活)

  • Win11 正式版到来,全新记事本外观大变:Fluent Design 设计更显现代化(window11正式版什么时候出来)

    Win11 正式版到来,全新记事本外观大变:Fluent Design 设计更显现代化(window11正式版什么时候出来)

  • 什么是关税自主权
  • 申报表货物及劳务是什么
  • 6个点税如何计算方法
  • 速达建账套期初数据
  • 低值易耗品包括哪些东西和产品
  • 出售自用汽车的税率
  • 增值税纳税申报表附列资料(二)
  • 税务局返还的三种税种
  • 银行打出的明细清单怎么看不懂
  • 购买设备送给客户帐务处理是怎样的?
  • 企业购买银行理财
  • 企业年会的增值税能抵扣吗?
  • 实收资本印花税是一年一交吗
  • 一般纳税人企业要交哪些税
  • 临时工工资作为人员成本如何做账
  • 受赠资产的价值和由捐赠企业负担的增值税
  • 2019年印花税税率表
  • 发票开了款没付
  • 医院职工福利费使用范围和标准是多少
  • 输入法自定义按键位置
  • 实发工资和报税工资
  • 留存利润和利润的关系
  • 公司收到搬运发票怎么做
  • 在window系统中哪些用户可以查看日志
  • 固定资产内部抵消
  • 代开专用发票缴纳增值税需要计提吗?
  • 已计提的存货跌价准备计入成本吗
  • 期间损益包括
  • framework3.5怎么打开
  • 税控减免怎么做账
  • servlet工作原理和生命周期
  • 300秒带你手写一首诗
  • 资产负债表各项目年初余额栏内各项数字
  • vuetify cdn
  • php多维数组合并相同key
  • 合理损耗如何计算成本
  • 承租人经营租赁账务处理
  • 应付票据贴现是负债吗
  • 银行存款利息收税吗
  • 微擎最新破解版
  • 购买税控设备的分录怎么做
  • 季中转一般纳税人申报了小规模后无法勾选认证
  • 销货方怎么开具购买方红冲的发票
  • 不开增值税发票的销售收入报税的操作流程是?
  • 网上银行跨行转账手续费
  • mysql设置uuid
  • 商品流通企业的进货费用
  • 哪些属于费用发票类型
  • 管理人员工资属于酌量性固定成本
  • 工伤七至十级有伤残津贴吗
  • 小规模纳税人发票怎么开
  • 建筑业营改增后税率变化
  • 强制删除快捷键是什么
  • windowsxp显卡驱动在哪个位置
  • centos配置kdump
  • ubuntucommand not found
  • xp系统回收站的东西删除了怎么找回来
  • linux 常用系统
  • win8打开运行的快捷键是什么
  • win10系统将IIS服务器发送到桌面快捷方式方法
  • windows8桌面图标没有了
  • nodejs nodemon
  • android su
  • Cocos2dx 疯狂跑酷(CrazyRun)游戏项目解析
  • opengl 缓存
  • linux shell脚本中sudo后输入密码
  • Unity3D事件函数的执行顺序
  • node.js [superAgent] 请求使用示例
  • unity二段跳
  • 深入理解中国式现代化
  • js字段截取
  • 使用jquery实现的项目
  • 纸质发票怎么查电子发票
  • 云南省电子税务局怎么改号码
  • 青岛地税局 局长
  • 如何打印个人所得税明细
  • 办税人员怎么绑定电子税务系统
  • 个人所得税工资达到多少才交税
  • 中华人民共和国道路交通安全法
  • 2021年福利彩票47期
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设