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

  • 微信头像可以用动态图吗(微信头像可以用菩萨做头像吗)

    微信头像可以用动态图吗(微信头像可以用菩萨做头像吗)

  • 支付宝集五福每人只能集一套吗(支付宝集五福每人可以集几套)

    支付宝集五福每人只能集一套吗(支付宝集五福每人可以集几套)

  • 华为手机在耳机模式怎么调回来(华为手机在耳机模式怎么退出)

    华为手机在耳机模式怎么调回来(华为手机在耳机模式怎么退出)

  • 苹果手机怎么把录屏放进控制中心(苹果手机怎么把两张照片合成一张)

    苹果手机怎么把录屏放进控制中心(苹果手机怎么把两张照片合成一张)

  • win10重装系统能保留应用吗(win10重装系统能清除病毒吗)

    win10重装系统能保留应用吗(win10重装系统能清除病毒吗)

  • 剪映怎么合并两个视频(剪映怎么合并两段音频)

    剪映怎么合并两个视频(剪映怎么合并两段音频)

  • 硬盘分区之后能还原吗(硬盘分区后还能恢复数据吗)

    硬盘分区之后能还原吗(硬盘分区后还能恢复数据吗)

  • 你已被主播移出直播间是怎么回事(你已被主播移出直播间,无法观看本场直播)

    你已被主播移出直播间是怎么回事(你已被主播移出直播间,无法观看本场直播)

  • 拼多多找不到订单记录(拼多多找不到订单怎么回事)

    拼多多找不到订单记录(拼多多找不到订单怎么回事)

  • iphone8听筒有杂音滋滋(iphone8听筒有杂音)

    iphone8听筒有杂音滋滋(iphone8听筒有杂音)

  • 苹果x闪屏是屏幕坏了吗(苹果x闪屏是屏幕问题吗)

    苹果x闪屏是屏幕坏了吗(苹果x闪屏是屏幕问题吗)

  • 电脑1068最快解决方法(电脑1068什么意思)

    电脑1068最快解决方法(电脑1068什么意思)

  • 手机怎么修改截图上的文字(手机怎么修改截图上的时间)

    手机怎么修改截图上的文字(手机怎么修改截图上的时间)

  • oppo强制退出耳机模式(强制退出耳机模式oppoa32)

    oppo强制退出耳机模式(强制退出耳机模式oppoa32)

  • 华为手机怎么解除锁屏(华为手机怎么解除风险应用权限)

    华为手机怎么解除锁屏(华为手机怎么解除风险应用权限)

  • 为什么抖音一直闪退(为什么抖音一直提示升级最新版本)

    为什么抖音一直闪退(为什么抖音一直提示升级最新版本)

  • 拼团购物是一人一份吗(拼团另一个人必须买吗)

    拼团购物是一人一份吗(拼团另一个人必须买吗)

  • 淘宝预售商品怎么加购物车(淘宝预售商品怎么设置)

    淘宝预售商品怎么加购物车(淘宝预售商品怎么设置)

  • 苹果11老是重启(苹果11老是重启修不了什么办呢)

    苹果11老是重启(苹果11老是重启修不了什么办呢)

  • klwtl00华为什么型号(华为klw-tl00)

    klwtl00华为什么型号(华为klw-tl00)

  • 无线网默认网关怎么查详情(wifi默认网关是什么)

    无线网默认网关怎么查详情(wifi默认网关是什么)

  • vite搭建vue3项目本地环境自定义域名及端口配置(使用vue搭建项目)

    vite搭建vue3项目本地环境自定义域名及端口配置(使用vue搭建项目)

  • python在协程中增加任务(python的协程)

    python在协程中增加任务(python的协程)

  • 一般纳税人开出的普票算销项税额吗
  • 拟上市企业需要做什么
  • 个体工商户税率2023
  • 什么是企业税务登记号
  • 税收分类编码是唯一的吗
  • 自产产品用于广告要交消费税吗
  • T3现金流量表怎么删除
  • 报销费用可不可以开专票
  • 印花税减半征收优惠政策2022
  • 行政事业单位房产税免征文件
  • 企业贷款罚息可以减免吗
  • 外商投资企业啥意思
  • 远期采购合同会查吗
  • 销售免税药品要进项税额转出吗
  • 准予抵扣的消费税
  • 小规模纳税人购入货物收到增值税专用发票
  • 一般纳税人17%增值税发票按12%核算如何进行账务处理?
  • 增值税清单模板样例导出
  • 税务局查账一般需要几天
  • 无票收入记账多的进项发票怎么处理?
  • 股权转让分期收款怎么企业所得税
  • 供热企业免税收入标准
  • 增值税专用发票跨月退回怎么办?
  • 房租怎么开票
  • 车辆保险属于金融机构吗
  • 子公司具有独立的法律地位吗
  • 分公司发生修理费能否在总公司列支?
  • 公司员工补充医疗保险方案
  • 营改增后装饰公司税率
  • win10怎么删除搜索
  • 民间非营利组织会计制度及操作实务
  • c盘扩展卷是灰色的,有空间
  • unity默认存储路径
  • 长期借款还款
  • 发票章需要注销吗
  • next frame
  • 尚硅谷百度贴吧
  • 培训机构给学员过生日文案
  • 企业现金支付的范围
  • 织梦cms要钱吗
  • pythonjam怎么用
  • 工商罚款计入
  • 建筑公司增值税专用发票税率是多少
  • 处置固定资产净收益属于利得吗
  • 总公司和分公司按什么分类
  • 小企业如何核算成本费用
  • 小规模纳税人企业所得税2023
  • 筹建期的收入要交企业所得税吗
  • 前期物业管理阶段的工作有哪些
  • 酒店的布草怎么铺
  • 资产减值损失为正数代表什么意思
  • 资本公积的意思是
  • 出口退税免抵退税额要交城建税吗
  • 企业购入材料收到供货单位开具的发票
  • 外贸采购的职责
  • 进项发票可以退税吗
  • 土地作为无形资产需要计提折旧吗?
  • 电子发票必须要打印出来才能作为入账依据
  • 速动比率特别高的原因
  • 国企背书是什么意思
  • 依法建账的法是指
  • sql server错误和使用情况报告
  • mysql函数大全以及举例
  • mysql5.7.22安装
  • Win7旗舰版系统安装
  • xp系统如何打印文件
  • 硬盘uefi启动安装系统
  • 如何在Windows下移动文件
  • win8切换语言
  • 我是一个打酱油的怎样理解
  • unity as
  • OpenGL Tutorial: (2) Creating an OpenGL Window
  • learning android
  • 易信安卓手机版
  • 安卓机虚拟键盘
  • 批处理应用实例
  • unity公路制作
  • 房地产开发企业会计制度
  • 增资注册资本
  • 江苏地方税务局2013招考公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设