位置: 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倍理论)

  • 酷狗投屏到电视怎么能带歌词(酷狗投屏到电视上不能自动下一首吗)

    酷狗投屏到电视怎么能带歌词(酷狗投屏到电视上不能自动下一首吗)

  • 微信公众号头像模糊怎么办(微信公众号头像暂时无法查看)

    微信公众号头像模糊怎么办(微信公众号头像暂时无法查看)

  • 蚂蚁庄园一只羽毛球上有几根羽毛(蚂蚁庄园一匹)

    蚂蚁庄园一只羽毛球上有几根羽毛(蚂蚁庄园一匹)

  • 百家号只发视频能转正吗(百家号只要发视频就有收益吗)

    百家号只发视频能转正吗(百家号只要发视频就有收益吗)

  • 京东卡能查到使用人吗(京东卡能否查到哪个账号使用了)

    京东卡能查到使用人吗(京东卡能否查到哪个账号使用了)

  • 微信不能付款怎么回事(微信不能付款怎么解封)

    微信不能付款怎么回事(微信不能付款怎么解封)

  • 苹果网易云歌词怎么显示在手机屏幕上(苹果网易云歌词字体大小怎么改)

    苹果网易云歌词怎么显示在手机屏幕上(苹果网易云歌词字体大小怎么改)

  • 手机qq视频通话怎么调静音

    手机qq视频通话怎么调静音

  • 小米10可以root吗(小米10手机可以root吗)

    小米10可以root吗(小米10手机可以root吗)

  • 苹果app内购买怎么退(苹果app内购买怎么关闭)

    苹果app内购买怎么退(苹果app内购买怎么关闭)

  • 网络异常聊天结束怎么回事(网络异常聊天结束图片)

    网络异常聊天结束怎么回事(网络异常聊天结束图片)

  • 怎么查看qq情侣空间和谁开过(怎么查看qq情侣分数)

    怎么查看qq情侣空间和谁开过(怎么查看qq情侣分数)

  • 腾讯大王卡看腾讯视频免流量吗(腾讯大王卡看腾讯视频怎么激活)

    腾讯大王卡看腾讯视频免流量吗(腾讯大王卡看腾讯视频怎么激活)

  • 路由器被关掉怎么开启(路由器关掉怎么开)

    路由器被关掉怎么开启(路由器关掉怎么开)

  • 华为mate30是双扬声器吗(华为mate30支持双扬声器吗?)

    华为mate30是双扬声器吗(华为mate30支持双扬声器吗?)

  • iphone8p有128g的吗(iphone8p有128g版本吗)

    iphone8p有128g的吗(iphone8p有128g版本吗)

  • 手机流量ip地址固定吗(手机流量ip地址查询位置)

    手机流量ip地址固定吗(手机流量ip地址查询位置)

  • 抖音变瘦特效在哪(抖音瘦特效没有了?)

    抖音变瘦特效在哪(抖音瘦特效没有了?)

  • wps ppt如何去掉图片底色(wpsppt如何去掉日期)

    wps ppt如何去掉图片底色(wpsppt如何去掉日期)

  • 一加7pro用的什么系统(一加7pro是)

    一加7pro用的什么系统(一加7pro是)

  • ipadpro与ipadair区别(ipadpro和ipadair哪个好)

    ipadpro与ipadair区别(ipadpro和ipadair哪个好)

  • 苹果8p与苹果x的区别(苹果8p和苹果x选哪个)

    苹果8p与苹果x的区别(苹果8p和苹果x选哪个)

  • 华为手机屏幕有个圆圈消除方法(华为手机屏幕有个圆点怎么取消)

    华为手机屏幕有个圆圈消除方法(华为手机屏幕有个圆点怎么取消)

  • 华为鸿蒙HarmonyOS 2.0开发者Beta 3 2.0.0.128 log版今日发布(华为鸿蒙harmonyos官网4.0升级)

    华为鸿蒙HarmonyOS 2.0开发者Beta 3 2.0.0.128 log版今日发布(华为鸿蒙harmonyos官网4.0升级)

  • 未交增值税和应交增值税科目怎么调整
  • 个体户收现金可以开发票吗
  • 现金折扣冲减收入吗
  • 发票丢失了可以报销吗
  • 自然人税收管理系统扣缴客户端
  • 研发费用加计扣除条件
  • 劳务分包预缴税怎么算
  • 冲抵货款的返利怎么做账
  • 无分包声明
  • 商业健康保险个税申报
  • 固定资产拆下旧部件
  • 长期股权投资是金融性资产吗
  • 公司增资怎么做
  • 在win7系统中,添加打印机驱动程序
  • 公司给员工的油费补贴以什么为依据入账
  • PHP:rawurldecode()的用法_url函数
  • 付款凭证怎么填写电脑
  • 工伤个人承担的费用
  • 企业如何转让
  • 超市发票是普票还是专票
  • php常用的魔术方法有哪些
  • 停车费报销怎么做账
  • php正则表达式验证网址
  • vue项目如何启动运行
  • Web前端开发知识点总结
  • vue2计算属性和vue3的计算属性的区别
  • 企业所得税的计算公式三种
  • 资产减值损失冲减
  • 农业种植公司有补贴吗
  • 2.MyBatis
  • java替换集合的元素
  • 进项税和销项税的分录
  • 购买种子能抵扣进项吗
  • 文件柜质量标准
  • 进口货物会计分录举例
  • 公司进项抵税
  • 利息收入管理办法
  • 注册资本认缴与注册登记实操
  • 借别人账户过钱
  • 预收账款年底是不是不能有余额
  • 收到专利权投资的票据
  • 减免的税金怎样做会计分录
  • 请问母公司如何称呼
  • 企业相关成本费用有哪些
  • 场地租赁费属于劳务还是服务
  • 公司装修费用如何计算
  • 去年已入账的材料怎么查
  • 代收代缴水电费如何开票
  • 分公司往子公司投资如何做税务处理?
  • 应交增值税减免税款科目
  • 预付账款怎么做坏账
  • 股东参与经营可以退股吗
  • 利润为负还要交增值税吗
  • MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 的原因分解决办法
  • win8pe无法识别硬盘
  • ghost重装步骤
  • wupdated.exe - wupdated是什么进程
  • os x yosemite wifi断线怎么办?yosemite wifi掉线解决详细步骤
  • SpamSubtract.exe - SpamSubtract是什么进程
  • 用linux配置ftp服务器的过程
  • ugui scrollview
  • 如何理解js中的原型
  • android项目总结
  • 我是如何从0开始做到年入1000+万的
  • 怎么做小地图
  • javascript概述及作用
  • windows批处理官方教程
  • jquery课程总结
  • jquery动态效果
  • python3+PyQt5实现使用剪贴板做复制与粘帖示例
  • android动画种类
  • unity制作的2d游戏
  • JavaScript+html5 canvas实现本地截图教程
  • 用jquery实现图片轮播
  • 国家税务总局全国增值税查询
  • 残疾人可以免增值税吗
  • 应征增值税不含销售额3%和5%征收的有什么区别
  • 个体工商户两处所得,如何减半个税
  • 无锡市高新区税务局张贤平
  • 北京出租车发票微信怎么查真伪?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设