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

  • 为什么5G突然不火了?前两年5G非常火热

    为什么5G突然不火了?前两年5G非常火热

  • 苹果的专注模式在哪里(苹果的专注模式怎么关闭)

    苹果的专注模式在哪里(苹果的专注模式怎么关闭)

  • 苹果的屏幕镜像怎么连接电视(苹果的屏幕镜像在哪里设置)

    苹果的屏幕镜像怎么连接电视(苹果的屏幕镜像在哪里设置)

  • 微信卡包怎么看(微信卡包怎么看发票)

    微信卡包怎么看(微信卡包怎么看发票)

  • 华硕电脑蓝屏了怎么办修复(华硕电脑蓝屏了怎么处理方法)

    华硕电脑蓝屏了怎么办修复(华硕电脑蓝屏了怎么处理方法)

  • 华为为什么不用大猩猩(华为为什么不用徕卡了)

    华为为什么不用大猩猩(华为为什么不用徕卡了)

  • 什么是微信实名认证(什么是微信实名认证与输入身份信息不匹配)

    什么是微信实名认证(什么是微信实名认证与输入身份信息不匹配)

  • 苹果6打电话对方听不见怎么办(苹果6打电话对方听到声音小)

    苹果6打电话对方听不见怎么办(苹果6打电话对方听到声音小)

  • 微信高风险用户什么意思(微信高风险用户图片)

    微信高风险用户什么意思(微信高风险用户图片)

  • 平板开不开机怎么办充电也没有反应(平板开不开机怎么刷机)

    平板开不开机怎么办充电也没有反应(平板开不开机怎么刷机)

  • 苹果无线耳机和有线耳机音质有区别吗(苹果无线耳机和华为无线耳机对比)

    苹果无线耳机和有线耳机音质有区别吗(苹果无线耳机和华为无线耳机对比)

  • 爱奇艺会员为什么总是重新登录(爱奇艺会员为什么不能在奇异果上用)

    爱奇艺会员为什么总是重新登录(爱奇艺会员为什么不能在奇异果上用)

  • 网易云怎么识别音乐(网易云怎么识别本地音乐)

    网易云怎么识别音乐(网易云怎么识别本地音乐)

  • 手机上字体怎么换字体(手机上字体怎么加粗)

    手机上字体怎么换字体(手机上字体怎么加粗)

  • 剪映教程音乐识别字幕(如何剪映音乐)

    剪映教程音乐识别字幕(如何剪映音乐)

  • 学习强国如何加入组织(强国软件如何加入组织)

    学习强国如何加入组织(强国软件如何加入组织)

  • 苹果11home键怎么调出来(苹果11home键怎么取消)

    苹果11home键怎么调出来(苹果11home键怎么取消)

  • 快手怎么看做作品具体发布时间(快手怎么看做作品时间)

    快手怎么看做作品具体发布时间(快手怎么看做作品时间)

  • 通讯录黑名单怎么解除(通讯录黑名单怎么找)

    通讯录黑名单怎么解除(通讯录黑名单怎么找)

  • yy回放怎么没字幕(yy直播回放怎么没有了)

    yy回放怎么没字幕(yy直播回放怎么没有了)

  • 华为mate30与mate30pro的区别(华为mate30与mate305g区别外型)

    华为mate30与mate30pro的区别(华为mate30与mate305g区别外型)

  • 通话质量不佳是哪一方(通话质量差的原因)

    通话质量不佳是哪一方(通话质量差的原因)

  • 苹果手机如何电话同步录音(苹果手机如何电视投屏设置方法)

    苹果手机如何电话同步录音(苹果手机如何电视投屏设置方法)

  • cad字体加粗(cad字体加粗怎么取消)

    cad字体加粗(cad字体加粗怎么取消)

  • QQ邮箱怎么添加账户(qq邮箱怎么添加word文档)

    QQ邮箱怎么添加账户(qq邮箱怎么添加word文档)

  • 【vue2】axios请求与axios拦截器的使用详解(vue-axios详细介绍)

    【vue2】axios请求与axios拦截器的使用详解(vue-axios详细介绍)

  • 小规模纳税人刚成立公司如何记账
  • 个人天猫怎么开网店
  • 金税四期有什么优势
  • 招聘只招一个人
  • 投资管理公司成立的条件
  • 留抵税额抵减欠税文件
  • 福利费进项税可以抵扣
  • 初期厂房监理费怎么做账?
  • 有发票和银行单据的区别
  • 调拨入库的固定资产是否缴税?
  • 出售无形资产属于让渡资产使用权吗
  • 转让金融资产的税率
  • 集团公司向子公司收取管理费的法律规定
  • 个人投资理财需要注意什么
  • 企业自建房是什么意思
  • 预缴纳税申报失败怎么办
  • 投资决策中常用的指标有
  • 基本户转移到别的银行怎么转移
  • 个体工商户做账可以做工资吗
  • 银行扣的短信费银行给开发票吗
  • 企业风险报酬转移怎么理解
  • 生活补贴和节日补贴区别
  • 电子商务出来干嘛
  • 小规模企业记账软件哪个好
  • 不交社保是否可以马上辞职
  • 进项税额暂不转出情况说明怎么写
  • 个人从价计征房产税
  • basic run
  • 收到安监处罚款怎么处理
  • 没进项能开销项吗
  • 爱尔兰新手岛
  • 给客户赠送的礼物叫什么
  • 企业补缴个人所得税罚款
  • dl是什么文件
  • 土地增值税属于财产税吗
  • 企业以物易物如何确认收入
  • 事业单位会计专业知识考什么
  • laravel dump
  • 待报解预算收入是社保扣费吗
  • vue的样式穿透
  • yii框架官网
  • 不缴纳增值税的收入需要缴纳水利税吗
  • SQLite教程(十三):C语言编程实例代码(1)
  • 国税联网状态怎么没显示
  • sql server 2008怎么使用sql语句
  • 欠款收不回来了会计分录
  • 金蝶财务软件怎么冲销费用
  • 取得虚开普票如何处置
  • 暂估入库的商品能出库吗
  • 发票隔月可以重开吗
  • 长期股权投资中级会计例题
  • 生产车间人员工资期末结转
  • 收到费用发票没有付款的会计分录
  • 合并企业如何缴纳印花税
  • 企业法人个人贷款企业承担吧?
  • 外贸企业面对人民币升值应该采取什么的避险措施
  • 金税盘每年服务费可以抵扣吗
  • 领用包装物的会计处理
  • 未完工工程如何验收
  • 发票抬头公司报销的该怎么写
  • 增值税普通发票查询
  • 公司增资需要什么流程呢 最新
  • 账簿设置方法
  • mysql中json格式是多少长度
  • Mysql 5.6.37 winx64安装双版本mysql笔记记录
  • xp系统电脑设置在哪
  • windows8怎么用
  • linux中的ls命令的功能是变换工作目录到目标指定目录
  • gnuradio编写模块
  • win7与xp双系统设置
  • edge新版浏览器
  • 微软刷机怎么刷
  • debian 单网卡设置双ip
  • win7怎么删除除了系统盘所有东西
  • javascript的简介
  • android手机屏幕采集触摸区域所有点
  • 网上申报成功怎么查询
  • 上海个人到税务局怎么开票
  • 东莞市官网
  • 河南国税发票查询真伪官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设