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

  • 华为Nova9se和nova8se有什么不同(华为nova9se和nova8se手机壳一样嘛)

    华为Nova9se和nova8se有什么不同(华为nova9se和nova8se手机壳一样嘛)

  • 如何将word中的所有英文字母设置成蓝色(如何将word中的回车符号去掉)

    如何将word中的所有英文字母设置成蓝色(如何将word中的回车符号去掉)

  • 微信被加黑名单怎么重新加对方知道吗(微信被加黑名单还能看到朋友圈吗)

    微信被加黑名单怎么重新加对方知道吗(微信被加黑名单还能看到朋友圈吗)

  • 双屏笔记本有哪些(双屏笔记本有哪几款电脑)

    双屏笔记本有哪些(双屏笔记本有哪几款电脑)

  • 电脑版微信怎么@人(电脑版微信怎么加好友)

    电脑版微信怎么@人(电脑版微信怎么加好友)

  • 手机无法加载图片是什么原因(手机无法加载图片怎么回事)

    手机无法加载图片是什么原因(手机无法加载图片怎么回事)

  • 键盘上感叹号是哪个键(键盘上面的感叹号)

    键盘上感叹号是哪个键(键盘上面的感叹号)

  • powerpoint的概念功能及其特点(介绍powerpoint的概念功能及其特点)

    powerpoint的概念功能及其特点(介绍powerpoint的概念功能及其特点)

  • 剪映的视频发朋友圈很模糊(剪映的视频发朋友圈很模糊怎么办)

    剪映的视频发朋友圈很模糊(剪映的视频发朋友圈很模糊怎么办)

  • 小米应用商店闪退解决方法(小米应用商店闪退打不开了)

    小米应用商店闪退解决方法(小米应用商店闪退打不开了)

  • 9700和9700f的区别(9700f对比9700kf)

    9700和9700f的区别(9700f对比9700kf)

  • 抖音蓝v认证几天可以通过(抖音蓝v认证几个账号)

    抖音蓝v认证几天可以通过(抖音蓝v认证几个账号)

  • oppor11充电慢咋办(oppo r11充电慢)

    oppor11充电慢咋办(oppo r11充电慢)

  • 内屏坏了外屏也要换吗(内屏坏了外屏也会坏吗)

    内屏坏了外屏也要换吗(内屏坏了外屏也会坏吗)

  • 抖音动态壁纸怎么设置锁屏(抖音动态壁纸怎么切换锁屏和主屏)

    抖音动态壁纸怎么设置锁屏(抖音动态壁纸怎么切换锁屏和主屏)

  • 苹果一代手表有啥功能(苹果一代手表有心率检测吗)

    苹果一代手表有啥功能(苹果一代手表有心率检测吗)

  • word文件设置不能修改(如何设置word文档不能编辑)

    word文件设置不能修改(如何设置word文档不能编辑)

  • 华为手机怎么关闭最近使用(华为手机怎么关空调)

    华为手机怎么关闭最近使用(华为手机怎么关空调)

  • 手机格式化在哪里(手机格式化在哪里找)

    手机格式化在哪里(手机格式化在哪里找)

  • 美团好评怎么写(奶茶美团好评怎么写)

    美团好评怎么写(奶茶美团好评怎么写)

  • 支付宝收款语音提醒怎样设置(支付宝收款语音播报器免费申请)

    支付宝收款语音提醒怎样设置(支付宝收款语音播报器免费申请)

  • Vue生命周期钩子剖析(共12个钩子)(vue生命周期钩子函数)

    Vue生命周期钩子剖析(共12个钩子)(vue生命周期钩子函数)

  • 递延所得税负债是什么科目
  • 拟上市企业需要做什么
  • 电商平台返佣金税务怎么走
  • 股东公司
  • 工资发放凭证由谁出具
  • 存货置换固定资产
  • 非税收入包括哪些
  • 税后扣税
  • 外贸企业需要交哪些税费
  • 纳税人签章填什么
  • 买卖投资证券基金怎么进行财税处理?
  • 土地闲置费是否可以列入生产成本
  • 哪些违约金可以退回
  • 土地增值税怎么预交
  • 减免税额期末需要结转吗
  • 如何理解结算方式以及结算方式有哪些?
  • 汽车罚款怎么进账
  • 发票冲红可以冲红数量不变金额减少
  • 个体工商户是小微吗
  • 建筑公司分包
  • 小黑马下载
  • php如何通过链接获取源码
  • 公司过节发红包怎么入账
  • 事业单位专项款不能购买资产吗
  • 未担保余值通俗理解
  • kb4592440安装失败
  • 期间费用转入本年利润
  • win7系统任务计划在哪里
  • 小规模纳税人免税会计分录
  • 企业所得税必须要季度缴纳吗
  • 财务处理的时候要做什么
  • 模型调参是调节什么
  • chat gpt 国内版免费手机
  • k8s kubelet
  • 文件上传模板怎么弄
  • 微信随机红包表情包怎么弄
  • 公司管理费一般占多少个点
  • 股东出资证明书范本
  • 成本利润率算出的不含税吗
  • 公转私法人
  • 低值易耗品如何摊销
  • mysql数据库的设计与实现
  • sql扩展
  • 本年计算扣除限额的基数计算公式
  • 营业外收入在资产负债表
  • 伙食堂是什么意思
  • 本年利润在
  • 建筑公司脚手架租赁费会计分录
  • 股权激励费用摊销意思是
  • 待认证进项税额和待抵扣进项税额的区别
  • 购进货物用于集体福利会计分录
  • 什么情况下增值税发票不能抵扣
  • 汽车4s店有哪些功能
  • 在途物资和材料采购的区别
  • 工业企业销售商品
  • java调用jni
  • MySql 5.6.14 Win32位免安装解压缩版配置教程
  • 电脑svchost占用cpu很大
  • win8.1进入桌面
  • centos7自签名证书
  • 怎么设置开机启动项?
  • windows defender 图标怎么从任务栏删除
  • xp连接到共享打印机
  • windows7cmd命令不能执行
  • pavprot.exe - pavprot是什么进程 作用是什么
  • linux中怎么在文件中添加内容
  • WIN7系统如何设置开机密码和屏保密码
  • win7操作系统的主要功能
  • win10开启预览
  • opengl learn
  • 怎么设置网页就用指定浏览器
  • unity怎么添加ui界面图片
  • java arraysort
  • json convert
  • 票据代码和票据号码是什么意思
  • 陕西省电子税务局
  • 债的抵偿顺序
  • 湖南电子税务申报
  • 代理记账费用可以全额抵扣吗
  • 税务会计业务处理流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设