
React结合Drag API实现拖拽示例详解

目录
- 认识拖拽
- 被拖拽元素
- 可释放目标
- 生命周期
- 拖拽操作中的数据传输
- 代码实现
- 如何标记当前拖拽的元素?
- 在画布中拖动
- 数据结构
- 总结
认识拖拽
鼠标拖拽是一个常见的交互场景,在这个熟悉的过程将会发生哪些事件?
拖拽事件指用户通过鼠标(或其他指针设备)将元素移到一个新的位置上。拖拽过程涉及两个对象:被拖拽元素(上图中 A )和可释放目标(上图中 B )
被拖拽元素
默认情况下,图片、链接和文本是可拖动的。HTML5 在所有 HTML 元素上规定了一个 draggable
属性, 表示元素是否可以拖动。图片和链接的 draggable 属性自动被设置为 true,而其他所有元素此属性的默认值为 false。
某个元素被拖动时,会依次触发以下事件:
ondragstart
:拖动开始,当鼠标按下并且开始移动鼠标时,触发此事件;整个周期只触发一次;ondrag
:只要元素仍被拖拽,就会持续触发此事件;ondragend
:拖拽结束,当鼠标松开后,会触发此事件;整个周期只触发一次。
可释放目标
当把拖拽元素移动到一个有效的放置目标时,目标对象会触发以下事件:
ondragenter
:只要一把拖拽元素移动到目标时,就会触发此事件;ondragover
:拖拽元素在目标中拖动时,会持续触发此事件;ondragleave
或ondrop
:拖拽元素离开目标时(没有在目标上放下),会触发ondragleave
;当拖拽元素在目标放下(松开鼠标),则触发ondrop
事件。
相关推荐
-
react拖拽组件react-sortable-hoc的使用
目录 1.文件1 2.文件2 3.使用 使用react-sortable-hoc实现拖拽 如图: 提示:下面案例可供参考 1.文件1 代码如下(示例):文件名称:./dragcomponents import * as React from 'react' import { sortableContainer, sortableElement, sortableHandle, } from "react-sortable-hoc"; // 拖拽的关键组件 const Sortable:
-
react 实现表格列表拖拽排序的示例
目录 问题描述 思路 解析 1. react-sortable-hoc 2. array-move 问题描述 在项目开发中,遇到这样一个需求:需要对表格里面的数据进行拖拽排序. 效果图如下所示: 思路 安装两个插件: react-sortable-hoc (或者 react-beautiful-dnd) array-move npm install --save react-sortable-hoc npm install --save array-move 解析 1. react-sortab
-
React实现卡片拖拽效果流程详解
前提摘要: 学习宋一玮 React 新版本 + 函数组件 &Hooks 优先 开篇就是函数组件+Hooks 实现的效果如下: 学到第11篇了 照葫芦画瓢,不过老师在讲解的过程中没有考虑拖拽目标项边界问题,我稍微处理了下这样就实现拖拽流畅了 下面就是主要的代码了,实现拖拽(src/App.js): 核心在于标记当前项,来源项,目标项,并且在拖拽完成时对数据处理,更新每一组数据(useState): /** @jsxImportSource @emotion/react */ // 上面代码是使用e
-
Composition API思想封装NProgress示例详解
目录 正文 安装和基本使用 自己实现一个 正文 最近在用vue3封装一套后台管理模版,自然会用到NProgress.如果你没有用过,你可以看一下instagram,youtube这些网站,它们都有一个顶部加载条,这也是现在最流行的网页加载条. 于是我发现了@vueuse/integrations中的useNProgress,我们先看一下Anthony Fu大神如何去封装的,然后咱们再去试着自己实现一下. 安装和基本使用 npm i nprogress @vueuse/integrations 基
-
Vue Element Sortablejs实现表格列的拖拽案例详解
1. css: dragTable.css @charset "UTF-8"; .w-table{ height: 100%; width: 100%; float: left; } /* 拖动过程中,鼠标显示样式 */ .w-table_moving .el-table th .thead-cell{ cursor: move !important; } .w-table_moving .el-table__fixed{ cursor: not-allowed; } .w-ta
-
React Native 中实现确认码组件示例详解
目录 正文 实现原理 开源方案 正文 确认码控件也是一个较为常见的组件了,乍一看,貌似较难实现,但实则主要是障眼法. 实现原理 上图 CodeInput 组件的 UI 结构如下: <View style={[styles.container]}> <TextInput autoFocus={true} /> <View style={[styles.cover, StyleSheet.absoluteFillObject]} pointerEvents="none&
-
C#组件FormDragger窗体拖拽器详解
适用:.net2.0+ winform项目 介绍: 类似QQ.迅雷等讲究UI体验的软件,都支持在窗口内多处地方拖动窗口,而不必老实巴交的去顶部标题栏拖,这个组件就是让winform也能这样随性拖拽,随性度或更甚.先看效果: 可拖拽的地方包括不限于: 窗体.Panel.GroupBox.TabControl等容器控件的空白区: 菜单栏.工具栏.状态栏等bar的空白区,以及无效项目: Label.PictureBox.ProgressBar等通常不与鼠标交互的控件: 一切无效控件(Enabled为f
-
JavaScript使用面向对象实现的拖拽功能详解
本文实例讲述了JavaScript使用面向对象实现的拖拽功能.分享给大家供大家参考,具体如下: 面向对象有个前提: 前提:所有东西都必须包含在onload里 改写:不能有函数嵌套,可以有全局变量 过程,如下 onload改成构造函数, 全局变量改成属性(通过this) 函数改写成方法 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/
-
JavaScript鼠标拖拽事件详解
本文实例为大家分享了js鼠标拖拽事件的详细实现代码,供大家参考,具体内容如下 图片如下: css代码 <style> *{ margin:0; padding:0; } #box{ width: 200px; height: 200px; background: url("./img/aio.png") no-repeat; background-size: cover; position: absolute;/*定位元素 父级元素window就是初始包含块*/ top:0
-
Java API操作Hdfs的示例详解
目录 1.遍历当前目录下所有文件与文件夹 2.遍历所有文件 3.创建文件夹 4.删除文件夹 5.上传文件 6.下载文件 1.遍历当前目录下所有文件与文件夹 可以使用listStatus方法实现上述需求.listStatus方法签名如下 /** * List the statuses of the files/directories in the given path if the path is * a directory. * * @param f given path * @return t
-
vue中Axios的封装和API接口的管理示例详解
目录 一.axios的封装 安装 引入 环境的切换 设置请求超时 post请求头的设置 请求拦截 响应的拦截 封装get方法和post方法 axios的封装基本就完成了,下面再简单说下api的统一管理. 2018.8.14更新 我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是在帮助我们简化代码和利于后期的更新维护. 一.axios的封装 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js
-
vue3使用自定义指令实现el dialog拖拽功能示例详解
目录 实现el-dialog的拖拽功能 通过自定义指令实现拖拽功能 实现拖拽功能 使用方式 实现el-dialog的拖拽功能 这里指的是 element-plus 的el-dialog组件,一开始该组件并没有实现拖拽的功能,当然现在可以通过设置属性的方式实现拖拽. 自带的拖拽功能非常严谨,拖拽时判断是否拖拽出窗口,如果出去了会阻止拖拽. 如果自带的拖拽功能可以满足需求的话,可以跳过本文. 通过自定义指令实现拖拽功能 因为要自己操作dom(设置事件),所以感觉还是使用自定义指令更直接一些,而且对原
-
react 组件实现无缝轮播示例详解
目录 正文 无缝轮播 实现思路 构思使用时代码结构 Carousel组件 CarouselItem组件 完善组件 完成小圆点 正文 需求是做一个无缝轮播图,我说这不是有很多现成的轮子吗?后来了解到他有一个特殊的需求,他要求小圆点需要在轮播图外面,因为现在大部分插件都是将小圆点写在轮播图内部的,这对于不了解插件内部结构的小伙伴确实不知道如何修改. 很久没有写插件的我准备写一个插件(react) 无缝轮播 无缝轮播从最后一张到第一张的过程中不会原路返回,它就像轮子似的,从结束到开始是无缝连接的,非常
随机推荐
- Javascript 面向对象(一)(共有方法,私有方法,特权方法)
- Python爬虫正则表达式常用符号和方法
- Java数据结构与算法之栈(Stack)实现详解
- asp.net与Discuz!NT整合集成实例教程
- MySQL 使用 SSL 连接配置详解
- Python构造函数及解构函数介绍
- jqueyr判断checkbox组的选中(示例代码)
- javascript 浏览器检测代码精简版
- 另类:巧用U盘制作DOS杀毒盘
- Linux的目录结构
- 详解Nginx反向代理到Tomcat服务器
- java中queue接口的使用详解
- PHP程序员编程注意事项
- JS基于贪心算法解决背包问题示例
- Nginx实现前后端分离
- 基于JS实现html中placeholder属性提示文字效果示例
- oracle中利用关键字rownum查询前20名员工信息及rownum用法
- java中生成任意之间数的随机数详解
- 关于C++动态分配内存的介绍
- JS立即执行的匿名函数用法分析
其他
- wpf 左边导航菜单
- sql2005改端口号有几种方法
- Element如何新添加一个Tag标签
- 网页加载完毕后进入显示进度
- 小程序中onload用法
- react hook 更新了对象 页面不刷新
- idea2020设置svn
- python 多进程父子进程无法实现并行
- OkHttp 自定义decoder
- laravel程序重置密码
- mybatisplus多租户踩坑
- java方法有如何在一个方法结束之后再调用另一个方法
- python不等于多个值怎么表示
- aop实现统计接口访问次数
- form-create生成自定义树形选择器组件
- 通用对话框 取特定目录
- ftp命令行上传文件put
- android1 seekbar 设置图标
- FormData 转 ArrayBuffer
- unity获取键盘F1