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

  • 劳务派遣公司如何收费
  • 外地预缴所得税的会计分录
  • 费用化的研发支出是否可以加计扣除
  • 印花税怎么计提和缴纳
  • 电子承兑超期一天怎么兑付
  • 购进环保节能设备如何抵扣进项税
  • 销售承兑现金会退回来吗
  • 个体户能开增值税专用发票税率是多少
  • 工地工资是人走账清吗
  • 与其他企业联营算投资吗
  • 移动电子发票怎么发送到邮箱
  • 为什么盈利的企业也有可能发生债务危机
  • 小规模纳税人定额发票累计领用金额
  • 公司个税申报是什么意思
  • 劳务外包与劳务派遣公司
  • 车间发生的购买办公用品支出应计入什么账户
  • 工程税金计入哪个账户
  • 期望和方差的计算例题
  • 增值税电子发票没有发票专用章
  • 公司培训餐费计入什么费用
  • 土地使用税从什么时候开始算
  • windows10如何关闭病毒和威胁防护设置
  • 飞鱼星路由器信号有点差怎么办
  • 购买办公用品发放给各部门使用
  • 腾讯电脑管家怎么修复dll
  • nginx apache php
  • 预提土增税账务处理
  • HBuilderX uni-app简单实现静态登录页面(实例)
  • 小规模企业需要交几个点
  • pytorch基础
  • 微信小程序详细教程
  • MMEngine理解
  • linux mail命令详解
  • 怎么查看代理记账协议终止情况
  • 企业能否自行填开发票入账
  • 建账在1月份如何录入期初
  • 收到退回的企业所得税分录
  • 如何快速删掉通讯录联系人
  • 跨年租金如何确认收入
  • 原始凭证可以直接入账吗
  • 什么是营业净利率计算公式
  • 暂估价和实际价格不一致的处理方式
  • 年化收益率和年利率区别
  • 线上线下财务
  • 关联方资金往来是否收取利息
  • 开出去的发票没有进项发票怎么核算成本?
  • 企业清算未收到发票
  • 企业中的消费环境分析
  • 实缴资本在公司能查到吗
  • 产品研发费用的计算公式
  • mysql 5.6新特性
  • Ubuntu16.04 server下配置MySQL,并开启远程连接的方法
  • 强行卸载系统应用
  • linux 编译命令
  • xp的开始菜单
  • linux中的用户管理主要涉及用户账号文件
  • ubuntu下安装deb文件
  • 怎么制作xp系统
  • xp系统组策略怎么打开
  • linux内核架构
  • windows7键盘
  • linux cp命令怎么用
  • win7系统怎么设置屏保图片
  • nodejs实战教程
  • python计算两日期间隔月份
  • bootstrap怎么用
  • windows配额
  • ie浏览器怎么设置打开网页在同一个窗口
  • python模块导入的几种方法
  • nodejs的http
  • android的edittext在哪
  • unity3d 画线
  • 网页编辑器手机版
  • js 单击弹出对话框
  • js实现自定义打印
  • androidstudio性能检测工具
  • 医保12333查询系统
  • 洗煤与选煤
  • 张雪峰谈建筑专业
  • 长期挂账的其他应付款的规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设