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

  • 苹果手机信息特效别人看的到吗(苹果手机信息特效怎么发)

    苹果手机信息特效别人看的到吗(苹果手机信息特效怎么发)

  • 施乐2520感光鼓怎么清零(施乐2520感光鼓寿命到期 091-401)

    施乐2520感光鼓怎么清零(施乐2520感光鼓寿命到期 091-401)

  • NFC功能是干嘛的(微信开启nfc功能是干嘛的)

    NFC功能是干嘛的(微信开启nfc功能是干嘛的)

  • 在线播放这是个什么东西(这个是b)

    在线播放这是个什么东西(这个是b)

  • 抖音直播点赞可以换钱吗(抖音直播点赞可以变现吗)

    抖音直播点赞可以换钱吗(抖音直播点赞可以变现吗)

  • 蓝牙耳机进水了能修吗(蓝牙耳机进水了能修好吗)

    蓝牙耳机进水了能修吗(蓝牙耳机进水了能修好吗)

  • 手机屏幕老化能修复吗(手机屏幕老化能用吗)

    手机屏幕老化能修复吗(手机屏幕老化能用吗)

  • 关闭拼小圈好友能看到吗(关闭拼小圈好友能看见曾经购买过吗)

    关闭拼小圈好友能看到吗(关闭拼小圈好友能看见曾经购买过吗)

  • letvx501是什么手机

    letvx501是什么手机

  • 华为手环充电不开机(华为手环充电不亮)

    华为手环充电不开机(华为手环充电不亮)

  • 双屏机是什么(双屏啥意思)

    双屏机是什么(双屏啥意思)

  • 开启adb重启什么意思(开启adb重启是什么)

    开启adb重启什么意思(开启adb重启是什么)

  • 韩剧tv投屏点了没反应(韩剧tv投屏投不上怎么办)

    韩剧tv投屏点了没反应(韩剧tv投屏投不上怎么办)

  • 怎样用电视看手机上的视频(怎样用电视看手机投屏)

    怎样用电视看手机上的视频(怎样用电视看手机投屏)

  • 苹果id验证码收不到怎么办(苹果id验证码收不到咋回事?)

    苹果id验证码收不到怎么办(苹果id验证码收不到咋回事?)

  • 2010powerpoint扩展名(powerpoint2020扩展名)

    2010powerpoint扩展名(powerpoint2020扩展名)

  • iphone8长宽高多少cm(苹果8长宽尺寸)

    iphone8长宽高多少cm(苹果8长宽尺寸)

  • 微信星标好友有什么用(微信星标好友有啥用)

    微信星标好友有什么用(微信星标好友有啥用)

  • 华为手机怎么显示后台(华为手机怎么显示返回键)

    华为手机怎么显示后台(华为手机怎么显示返回键)

  • vivo手机设置sos(vivo手机设置搜索不到gms)

    vivo手机设置sos(vivo手机设置搜索不到gms)

  • 手机定时关机定时开机怎么做(手机定时关机定时开机对手机有影响吗)

    手机定时关机定时开机怎么做(手机定时关机定时开机对手机有影响吗)

  • 苹果手表3支持无线充吗(苹果手表3支持快充吗)

    苹果手表3支持无线充吗(苹果手表3支持快充吗)

  • 小米8如何取消来电转接(小米8如何取消主题)

    小米8如何取消来电转接(小米8如何取消主题)

  • 红米k20pro游戏模式在哪里(红米k20手机的游戏模式怎么设置)

    红米k20pro游戏模式在哪里(红米k20手机的游戏模式怎么设置)

  • 苹果热点怎么设置人数(苹果热点怎么设置几个人连接)

    苹果热点怎么设置人数(苹果热点怎么设置几个人连接)

  • 如何在win 7找出后台运行程序?(如何在win7中查找文件)

    如何在win 7找出后台运行程序?(如何在win7中查找文件)

  • 3D相机获取点云信息的几种方法(3d点云处理算法)

    3D相机获取点云信息的几种方法(3d点云处理算法)

  • 【NLP屠夫系列】- NER之实战BILSTM(网络用语屠夫)

    【NLP屠夫系列】- NER之实战BILSTM(网络用语屠夫)

  • 印花税核定征收文件
  • 过头税产生的根源
  • 汇算清缴哪些需要调增调减
  • 营业外支出增加的原因
  • 个体工商户怎么变更法人
  • 营业外收入怎么算增值税
  • 加计抵扣进项税进营业外收入
  • 红字信息表状态是B900071
  • 外贸企业出口退税计算公式
  • 个人购买商铺如何缴税
  • 个税申报包含哪些
  • 递延所得税负债是什么意思
  • 基本户开户费多少钱
  • 进项税额转出怎么申报
  • 信用等级D可以贷款吗
  • 公司获得投资
  • 递延收益相关的法律规定
  • 增值税免税收入进项税额转出
  • 土地出让金返还流程
  • 委托加工物资增值税怎么计算
  • 企业所得税视同销售怎么处理?
  • 拆迁安置土地的补偿标准
  • 增值税的征收范围包括在中华人民共和国境内
  • 生物制品的生产过程及设备
  • 软件无法运行解决方法
  • 白内障手术费用大概几天出院
  • 年底公司抵税
  • 项目盈利后收到短信
  • 备份计算机需要多久
  • 补缴的土地出让金契税
  • 企业对员工罚款的法律依据
  • 生产费用在完工产品和在产品之间
  • 购入专利权属于
  • php十进制转二进制算法
  • 接受投资收到的现金计入
  • 原材料按计划成本核算例题
  • 制造费用的工资怎么结转
  • 4、nerf(pytorch)
  • vue该怎么学
  • 海关缴款书能重开吗
  • 退税勾选错了怎么办
  • 不免征个人所得税的是个人转让著作权所得
  • 捐赠合同模板
  • 预付和挂账怎么做分录
  • python27文件夹
  • 以前年度损益调整是什么意思
  • 织梦如何使用不侵权
  • mongodb进阶与实战下载
  • 利息应怎么录入收入
  • 资产减值损失借方余额在利润表怎么填列
  • 营业执照需要提交什么材料
  • 企业所得税退回应交税费会计分录
  • 资产处置收益项目有哪些
  • 公司闲置房屋出租合法吗
  • 固定资产的计提折旧方法有哪些
  • 银行存款日记账与银行对账单之间的核对属于
  • 建筑业分包税收政策
  • mysql数据库简单介绍
  • mysql5717安装及配置超详细教程
  • 注册表出错打不开程序
  • win2008 server r2 intel无法安装网卡驱动不存在英特尔PRO适配器的解决方法
  • xp的兼容模式
  • win10新版cortana
  • demon.exe是什么
  • windows7hosts文件
  • Linux下使用httpry来嗅探HTTP流量教程
  • shell脚本case语句判断成绩
  • nodejs xhr
  • node运行js文件
  • Python默认参数 数组坑
  • jquery点击方法
  • 江苏省无锡市国家电网客服电话是多少
  • 民办幼儿园属于民营企业吗
  • 出口退税是否缴纳所得税
  • 进口增值税如何勾选认证
  • 经信委和科技局的区别
  • 深圳国委
  • 电子税务网没开通怎么办
  • 十堰市税务大厅
  • 税票电话号码变更影响抵扣吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设