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

  • 工商网企业信息查询系统是否被列入经营异常名录

    工商网企业信息查询系统是否被列入经营异常名录

  • 华为手机禁止安装应用怎么解除(华为手机禁止安装程序,要怎么设置才能解除?)

    华为手机禁止安装应用怎么解除(华为手机禁止安装程序,要怎么设置才能解除?)

  • 锂电池进水会爆炸吗(锂电池进水爆炸)

    锂电池进水会爆炸吗(锂电池进水爆炸)

  • 抖音上购买的订单怎么查看(抖音上购买的订单删除了怎么找回)

    抖音上购买的订单怎么查看(抖音上购买的订单删除了怎么找回)

  • wps怎么输入平方2(怎么用wps打出平方)

    wps怎么输入平方2(怎么用wps打出平方)

  • 苹果x声音怎么调到最大(苹果X声音怎么调)

    苹果x声音怎么调到最大(苹果X声音怎么调)

  • oppo手机测距仪在哪里(oppo手机测距仪收费吗)

    oppo手机测距仪在哪里(oppo手机测距仪收费吗)

  • 抖音怎么不能置顶了(抖音怎么不能置顶评论了)

    抖音怎么不能置顶了(抖音怎么不能置顶评论了)

  • 苹果支持30w快充吗(苹果支持30w快充不)

    苹果支持30w快充吗(苹果支持30w快充不)

  • 5g手机插4g卡网速快吗(5g手机插4g卡网速慢)

    5g手机插4g卡网速快吗(5g手机插4g卡网速慢)

  • 微博的草稿箱怎么找(微博草稿箱怎么看)

    微博的草稿箱怎么找(微博草稿箱怎么看)

  • 华为40w快充伤电池吗(华为40瓦快充技术)

    华为40w快充伤电池吗(华为40瓦快充技术)

  • 微信注销掉需要多长时间(微信注销掉需要什么条件)

    微信注销掉需要多长时间(微信注销掉需要什么条件)

  • 荣耀9x摄像头怎么升降(荣耀9x摄像机)

    荣耀9x摄像头怎么升降(荣耀9x摄像机)

  • 淘宝预售在哪里看(淘宝预售在哪里搞)

    淘宝预售在哪里看(淘宝预售在哪里搞)

  • iqooneo855有nfc功能吗(iqooneo855版nfc)

    iqooneo855有nfc功能吗(iqooneo855版nfc)

  • 电子保修卡有什么用(电子保修卡什么时候激活好)

    电子保修卡有什么用(电子保修卡什么时候激活好)

  • 抖音订单怎么退货(抖音订单怎么退换货申请)

    抖音订单怎么退货(抖音订单怎么退换货申请)

  • 如何关闭微博不让人看(如何关闭微博不让人看我的关注)

    如何关闭微博不让人看(如何关闭微博不让人看我的关注)

  • 苹果平板怎么下载爱奇艺(苹果平板怎么下载爱思助手)

    苹果平板怎么下载爱奇艺(苹果平板怎么下载爱思助手)

  • 12306候补下单怎么操作(12306候补下单怎么看排到第几位了)

    12306候补下单怎么操作(12306候补下单怎么看排到第几位了)

  • 苹果怎么清理隐藏缓存(苹果怎么清理隐私)

    苹果怎么清理隐藏缓存(苹果怎么清理隐私)

  • 【三维目标检测】CenterPoint(一)(三维目标通用模板)

    【三维目标检测】CenterPoint(一)(三维目标通用模板)

  • 【哈士奇赠书活动 - 18期】-〖Flask Web全栈开发实战〗(哈士奇新手礼包)

    【哈士奇赠书活动 - 18期】-〖Flask Web全栈开发实战〗(哈士奇新手礼包)

  • python中mypy是什么(python中myqr的用法)

    python中mypy是什么(python中myqr的用法)

  • 免税收入进项税额转出比例结转法
  • 房地产增值税税率是多少
  • 税务稽查最坏结果不知情人员怎么办
  • 契税的具体适用税率是多少
  • 个税申报赡养老人只能填一个吗
  • 进项抵扣联丢了怎么办
  • 费用发票跨月可以入帐吗
  • 金税盘清卡怎么统计税额
  • 车船税是费用吗
  • 代收款是什么套路
  • 独资企业是向地税申报个税吗
  • 行政单位特殊人工手机电话费是否可以报销
  • 将汽车奖励给员工财务如何处理?
  • 企业核税需要什么资料
  • 公司注销后还会有事吗
  • 生产企业出口退税流程
  • 购货发票未到
  • 城建税税收减免政策
  • 营改增后,企业购进自用小轿车增值税
  • 如何区分纳税人和小规模纳税人
  • 完税凭证号是几位数
  • 人人有份类似的词语
  • 土地城镇化怎么计算
  • 合同取得成本和增量成本有什么区别
  • 电脑开机故障不开机
  • 客户罚款记哪个科目
  • mac怎么彻底删除一个软件
  • 专项用途财政性资金纳税调整表
  • 小规模纳税人结转免交增值税
  • 母公司向子公司发行面值100万元、期限为三年
  • win11怎么用户改名
  • php 上传
  • 数据库olap
  • 企业缴纳职工社保是否可以缴纳三险
  • 代理业如何交增值税
  • svc语法
  • php 封装
  • 树莓派能干什么
  • 机器学习期末复习题
  • 贪吃蛇python小白
  • 在计算土地增值税时质量保证金可以扣除
  • 小规模纳税人无票收入怎么申报
  • 如何设置固定资产累计折旧增值税进项税额缺损入账科目
  • 印花税购销合同包括哪些
  • 专项资金支出明细表范文
  • 金税四期主要核查什么?
  • 冲帐发票
  • 技术服务收入包括哪些
  • 收到一张发票摘要怎么填
  • 增值税专用发票查询系统官方网站
  • 赠送商品需要开发票吗
  • 企业取得租车发票
  • 代收代缴水电费协议
  • 2021年财务报表申报
  • mysql解压版
  • sqlserver中时间类型
  • mysql 更改密码
  • sqlserver导出mysql
  • mysql local-infile
  • Navicat连接MySQL报错
  • 安装软件提示windows 无法访问指定设备,路径或文件
  • WIN7系统如何设置自动关机
  • win8系统出现蓝屏怎样处理
  • Virtualbox共享文件
  • 图片缩略图是什么意思
  • nmstt.exe - nmstt是什么进程 有什么用
  • dos启动方式
  • div li
  • android中handler机制
  • 解决跨域的原理
  • 安卓模拟器比手机快吗
  • 侧边栏html
  • js对象判断
  • 国家税务江苏税务总局官网
  • 期初未缴税额是什么意思
  • 船舶吨税 税率
  • 进口哪些情况要交税
  • 银川买的新房契税怎么算
  • 契税完税证明遗失
  • 厦门地税电话客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设