首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端里的拖拖拽拽了解一下?

dragendondragend当拖动的元素被释放(️松开、按键盘 ESC)时拖拽dragenterondragenter当拖动元素到一个可释放目标元素时放置dragexitondragexit当元素变得不再是拖动操作的选中目标时放置...dragleaveondragleave当拖动元素离开一个可释放目标元素放置dragoverondragover当元素被拖到一个可释放目标元素上时(100 ms/次)放置dropondrop当拖动元素在可释放目标元素上释放时放置...1.3 DataTransfer 在上述的事件类型中,不难发现,放置元素和拖动元素分别绑定了自己的事件,可如何将拖拽元素和放置元素建立联系以及传递数据?...2.1 设计实现 结合上述的 Drag & Drop 的事件类型,那么拖拽排序主要是针对“拖动对象”之间相互作用关系的逻辑梳理,此处我们暂且区分为: 源对象: 拖拽列表中被拖动的单个列表项 目标对象:...拖拽列表中和“源对象”产生“相互作用”的列表项 整体的交互事件的设计思路如下: (1) ondragstart 此时开始拖拽“源对象”的时机,在此事件回调函数中改变“源对象”的样式,设置拖拽的一些传递参数等初始值

5K30

使用React DnD实现列表拖拽排序

主要实现以下功能: 鼠标hover到【列表项】,显示可【拖动图标】; 抓取【拖动图标】并拖动,【列表项】跟随鼠标; 拖动过程【其他列表项】自行挪动; 拖动到目标位置,释放鼠标,完成排序; 由于项目使用...React DnD 是一组 React 高阶组件,使用的时候只需要将对应的 API 将目标组件进行包裹,即可实现拖动或接受拖动元素的功能。...详细用法请参考 React DnD 文档 或 react-dnd 用法详解 实现列表拖拽排序 components/DndList.js import React, { useState } from... ) ); } const type = "item"; const dragSpec = { // 拖动开始时...beginDrag: props => ({ id: props.id, originalIndex: props.find(props.id).index }), // 拖动停止时

9.7K41
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    React drag 排序折腾小记

    需求,一个列表,期望可以支持拖动排序。.... dnd 是基于前者的,所以 API 完全通用,找到的 react-beautiful-dnd 资料对其也适用。...但是, 有一个需求无法被满足,就是列表换行的场景。 2018 年有人提出这个问题,但是没有处理,最后还在 issue 中骂了起来,翻译成中文就是:“No BB, you can you up.”...的长度是不一样的,则拖动时,会进行缩放,看起来有点点奇怪 大问题是,如果 Item 中有需要进行交互的内容,则会失效, How do I prevent draggable on input and...template - CodeSandbox 解决了不同长度的 Item 在拖动时的预览缩放问题, 通过使用控制点的方式(仅在部分 UI 上响应拖动操作),解决了 Item 内部不可交互的问题。

    9110

    【前端拖拽组件库】最强开源高性能组件库Pragmatic-drag-and-drop简介与分析

    react-drop-indicator:渲染放下时的指标flourish:使拖动操作更绚丽多彩的效果(例如,drop 时闪光)auto-scroll:拖动操作期间更绚的自动滚动效果react-accessibility...是快了166ms,用时1ms;在服务端渲染时,Pragmatic-drag-and-drop比react-beatiful-dnd快了进10ms,比react-dnd是快了5ms,只用时0.1ms。...四、实操教程下面我们将根据官网的一个实例,学习使用 Pragmatic-drag-and-drop实现一些基本功能,包括可拖放、拖放目标和监视器,我们将创建一个带有可拖动棋子的棋盘,效果图如下:1.构建可拖动棋子我们第一步是允许棋子被拖动...,Pragmatic-drag-and-drop提供了一个可拖动的函数draggable,可以将其附加到元素以启用可拖动行为,为了使作品在拖动时淡入淡出,我们可以在可拖动的设置状态中使用 onDragStart...'lightgrey' : 'white';}3.移动棋子最后实现棋子在掉落时移动方块,我们将使用monitorForElements实用的拖放功能。监视器允许从代码库中的任何位置观察拖放交互。

    3.7K22

    使用 React-DnD 打造简易低代码平台

    从融资轮次分布上看,2016年天使轮、种子轮、A轮和B轮融资占比为50%,而到2020年,其占比则达到78.6%,相比2016年上升了28.6%。这可以说明低代码市场整体仍处于发展初期 。...”实现 关键词就是“拖拽”,其实“拖拽”的交互方式早在 Jquery 时代就有,关于拖拽在前端实现主要分为 2 种 是以 jquery-ui 为代表的 draggable 和 Droppable,其原理是通过鼠标事件...React-dnd React DnD 是 React 和 Redux 核心作者 Dan Abramov 创造的一组 React 工具库,可以帮助您构建复杂的拖放接口,同时保持组件的解耦性。...item 就是拖动时候传递的数据 end 是拖放结束后的回调 collect 用于获得拖动的状态,可以设置样式 DropContainer 实现 import { useDrop } from 'react-dnd...定义 JSON 接下来我们要: 定义可拖动的组件类型 每个组件类型对应的渲染组件 每个组件的属性设置 先来定义几个可拖动的字段吧,比如最基本的数据类型,div、h1、 p 标签都是一个组件,那就我先定义出以下字段类型

    6.2K20

    有趣的拖放案例

    问题**在epilot,我们在应用程序的不同部分广泛使用了react-beautiful-dnd。然而,在尝试一些复杂的场景时,我们在某些情境中遇到了一些障碍,它无法准确预测元素的放置位置。...dnd-kit的关键优势包括:零依赖优化的性能可访问性支持多种输入方法全面的文档和示例演示代码这里是使用两个库进行简单拖放的代码。...它符合我们解决更复杂的嵌套拖放场景以及在不同级别拖动的能力的目标。dnd-kit的一些关键优势非常有用,包括:自定义占位符 - 这是最受欢迎的用例之一。...在我们的场景中,我们希望在拖动期间显示元素及其子元素的精简版本,因此我们使用了带有React portal的DragOverlay。...排序策略 - 同样,它提供了不同的排序策略,使垂直列表、水平列表或网格的排序成为可能。我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

    31100

    【JS】1724- 重学 JavaScript API - Drag and Drop API

    「处理拖放事件」:根据需要,处理「可拖拽元素」和放置目标的事件,例如拖动开始(dragstart[2])、拖动过程中(drag[3])、拖动结束(dragend[4])以及放置操作(drop[5])等。...当拖动 drag-source 元素时,使用 event.dataTransfer.setData() 方法设置了拖动数据,而放置目标元素时,执行 drop事件监听的回调方法,实现被拖动的元素添加到可放置元素底下...我们创建了两个相册容器(「album-1」和「album-2」),每个相册容器中包含了一些可拖动的图片元素。...我们创建了一个任务列表容器(task-list),其中包含了几个可拖动的任务卡片。...; 使用 drop 事件在任务列表容器中创建新的任务卡片。

    29820

    前端10大开源拖拽排序库汇总, 让搭建,更简单

    」 是一组 「React」 高阶组件,使用的时候只需要使用对应的 「API」 将目标组件进行包裹,即可实现拖动或接受拖动元素的功能。...它提供了一个视觉效果引擎,一个拖放库(包括可排序列表),几个控件(基于「Ajax」的动态下拉列表,原地编辑,滑块)等等。...有很多库允许React中的拖放交互. 其中最值得注意的是惊人的「react-dnd」. 它提供了一套非常出色的拖放函数,这些函数在特定情况下非常适用疯狂地不一致的html5拖放功能....8. dnd kit 「dndkit」 可以让我们轻松构建拖放界面, 而无需在每次项目需要移动位置时都更新「dom」....Formily 在 React 中,在受控模式下,表单的整树渲染问题非常明显。

    6.1K21

    整理了12款开源拖拽库, 轻松上手可视化搭建

    」 是一组 「React」 高阶组件,使用的时候只需要使用对应的 「API」 将目标组件进行包裹,即可实现拖动或接受拖动元素的功能。...它提供了一个视觉效果引擎,一个拖放库(包括可排序列表),几个控件(基于「Ajax」的动态下拉列表,原地编辑,滑块)等等。...有很多库允许React中的拖放交互. 其中最值得注意的是惊人的「react-dnd」. 它提供了一套非常出色的拖放函数,这些函数在特定情况下非常适用疯狂地不一致的html5拖放功能....「react-beautiful-dnd」 是为垂直和水平列表专门构建的更高级别的抽象. 在该功能的子集内「react-beautiful-dnd」提供强大,自然和美丽的拖放体验....8. dnd kit 「dndkit」 可以让我们轻松构建拖放界面, 而无需在每次项目需要移动位置时都更新「dom」.

    2.1K20

    Easyui datagrid 实现表格记录拖拽

    测试环境 jquery-easyui-1.5.3 jquery-easyui-datagrid-dnd 下载地址: http://www.jeasyui.net/demo/193.html 实现 编辑...datagrid-dnd.js,注释头尾两行代码,如下 //(function($){ //})(jQuery); 关键代码 引入js文件 时触发。 targetRow:放置的目标行。 sourceRow:拖拽的源行。...--项目配置名称列表-->

    …… …… js函数实现 // 正在编辑时,

    1.4K20

    JavaScript进阶之实现拖拽

    最近做到的react项目就有一个拖拽的需求,然后大概搜索了一下,找到了star比较高的react-dnd库,但是阅读react-dnd的官方文档还是有点难受的,因为概念性比较强,所以在介绍react-dnd...mouseup事件在指针设备按钮抬起时触发。 当指针设备( 通常指鼠标 )在元素上移动时, mousemove 事件被触发。 JavaScript三大家族 ? ? 明白了上述?...一个典型的drag操作是这样开始的:用户用鼠标选中一个可拖动的(draggable)元素,移动鼠标到一个可放置的(droppable)元素,然后释放鼠标。...是不是很接近我们的需求啦 自定义拖动图像 拖动过程中,浏览器会在鼠标旁显示一张默认图片。当然,应用程序也可以通过 setDragImage() 方法自定义一张图片,如下面的例子所示。...定义拖动效果 dropEffect 属性用来控制拖放操作中用户给予的反馈。它会影响到拖动过程中浏览器显示的鼠标样式。比如,当用户悬停在目标元素上的时候,浏览器鼠标也许要反映拖放操作的类型。

    2.7K40

    drag事件详解:html5鼠标拖动排序及resize实现方案分析及实践

    对列表进行拖动排序,尺寸改变。之前一般会使用jQuery-UI(interactjs更加纯粹)。其通过mousedown、mousemove、mouseup这三个事件来实现页面元素被鼠标拖拽的效果。...,被拖拽对象离开目标对象时触发拖动事件列表每一个可拖动的元素,在拖动过程中,都会经历三个过程,拖动开始-->拖动过程中--> 拖动结束在拖动目标上触发事件 (源元素-被拖动的元素):ondragstart...- 在元素开始被拖动时候触发——拖动什么ondrag - 在元素被拖动时反复触发ondragend - 在拖动操作完成时触发释放目标时触发的事件(目的地对象):ondragenter - 当被鼠标拖动的对象进入其容器范围内时触发此事件...它返回一个我们在dragstart事件中设置的拖动数据格式的数组。 格式顺序与拖动操作中包含的数据顺序相同。files返回拖动操作中的文件列表。包含一个在数据传输上所有可用的本地文件列表。...另外,我在ondragover时,尝试给被拖拽元素添加class以改变其样式发现,虽然拖拽时class已经改变,但在拖拽过程中样式并没有改变,而是等到拖拽动作完成后,也就是drop之后样式才被应用上去,

    6.4K21

    React 拖拽排序组件 Draggable Sortable

    在React中,通常使用第三方库如react-dnd(React Drag and Drop)或react-sortable-hoc来实现这一功能。...三、常见问题 (一)性能问题 频繁渲染 在拖拽过程中,组件可能会频繁重新渲染,导致性能下降。特别是在大型列表中,这种现象更为明显。 解决方案:优化组件的渲染逻辑,避免不必要的重新渲染。...此外,确保只在必要时更新状态。 滚动条卡顿 当列表较长且包含滚动条时,拖拽操作可能导致滚动条卡顿。...(二)样式问题 拖拽项样式异常 拖拽项在拖动过程中可能出现样式异常,如背景色消失、边框不一致等。 解决方案:为拖拽项添加特定的样式类,在拖动过程中动态切换样式。...SortableItem = React.memo(sortableElement(({ value }) => ( {value} ))); 添加样式支持 为拖拽项添加特定样式,确保在拖动过程中保持良好的视觉效果

    8500

    拖拽排序后端实现方案思考

    看板软件,相信大多人都用过类似的软件,主要就是卡片拖动,卡片可以左右拖动,上下拖动,后端如何实现才能做到不用每次重排序号从而提高性能呢,在企业软件中也有很多树形和列表都是支持拖动排序的,这样设计比传统的上下直接移动可以提高效率...在拖动的时候,分为三种情况: 1、调整一个元素到两个元素中间时,那么就是直接将拖动的那条数据sort=两条数据之和 ÷ 2更新到数据库即可。...2、调整一个元素到第一个元素上方时,那么就是直接将拖动的那条数据sort=第一条数据sort ÷ 2然后保存到数据库即可。...3、调整一个元素到最后一个元素下方时,那么就是直接将拖动的那条数据sort=最后那条数据sort + 1024然后保存到数据库即可。...- 知乎 拖拽排序后端设计与实现 - 简书 工作实践:拖拽排序的后端实现 - 掘金 设计一个通用的排序方案,关于模糊中间数的计算思路 - 掘金 使用React DnD实现列表拖拽排序-腾讯云开发者社区-

    89710

    基于 HTML5 Canvas 的工控机柜 U 位动态管理

    之所以要规定服务器的尺寸,是为了使服务器保持适当的尺寸以便放在铁质或铝质的机架上。机架上有固定服务器的螺孔,以便它能与服务器的螺孔对上号,再用螺丝加以固定好,以方便安装每一部服务器所需要的空间。...this.rackBuild) { this.rackBuild = new RackBuild(this);// 此类中定义了场景的中间列表部分,右边拓扑图部分以及对应的逻辑...= listView.getDataAt(e);// 传入逻辑坐标点或者交互event事件参数,返回当前点下的数据元素 listView.sm().ss(data);// 在拖拽的过程中设置列表组件中的被拖拽的元素被选中...); self.dnd = null; } } 设备拖动 ?..._oldPosition); } } } 代码中的 showDragHelper 就是在设备拖动的过程中,显示在机柜上,设备下的作为占位的绿色的矩形,为了方面看到当前移动的位置在机柜上显示的位置

    2.4K40

    HTML5魔法堂:全面理解Drag & Drop API

    ,从而导致被拖动的元素出现突然开始移动的效果 // 通过在dragstart中修改被拖动元素offsetTop/Left可优化该情况...auto ,默认值,img和带href属性的a标签则表示可拖拽,其他标签表示不可被拖拽 4....仅能在 dragover 事件中设置该属性值,其他事件中设置均无效   2. 当显示禁止的指针样式时,将无法触发目标元素的 drop 事件。 [c]....仅在 dragstart 事件中调用,Chrome37和IE10+不支持该方法; void setDragImage({Element} image, {long} x, {long} y) :设置拖动时跟随鼠标移动的图片...HTML5 DnD API最常见的用法就是文件拖拽上传,或把文档内某元素拖到其他元素内或OS桌面上等。这些都是HTML4时代的js很难处理,或者无法处理的。

    4K100

    vue-grid-layout数据可视化图表面板优化过程所遇问题汇总

    还有有些实现还使用了Bus 透传 drag/dragend 事件,其实这里可能没有理解 :针对对象事件名称说明被拖动的元素dragstart在元素开始被拖动时候触发drag在元素被拖动时反复触发dragend...在拖动操作完成时触发目的地对象dragenter当被拖动元素进入目的地元素所占据的屏幕空间时触发dragover当被拖动元素在目的地元素内时触发dragleave当被拖动元素没有放下就离开目的地元素时触发整个拖拽事件触发的顺序如下...具体查看官方文档:https://html.spec.whatwg.org/multipage/dnd.html#drag-data-store这样就可以解释为什么dragover中dataTransfer.getData...另外,我在ondragover时,尝试给被拖拽元素添加class以改变其样式发现,虽然拖拽时class已经改变,但在拖拽过程中样式并没有改变,而是等到拖拽动作完成后,也就是drop之后样式才被应用上去,...drop事件不触发:在发现页面拖动过程中,drop事件不触发,重新了看了下《drag事件详解:html5鼠标拖动排序及resize实现方案分析及实践》drop:源对象拖放到目标对象中,目标对象完全接受被拖拽对象时触发

    1.6K30

    有点意思的gif动图生成平台开发实战(二)

    接下来我们看看主要要实现的功能点: 纯前端实现图片上传和预览 基于react-beautiful-dnd实现元素自由拖动排序 使用javascript实现生成uuid的函数 使用file-saver实现前端下载文件...使用react-beautiful-dnd实现元素自由拖动排序 大家在研究过H5-Dooring | 一款强大的开源H5编辑器 后就会发现react-dnd这个模块很熟悉, 因为该开源编辑器就使用了react-dnd...我们都知道滑块滑动越长, 数值越大, 与之对应的 速度越大, 时间间隔越小, 所以我们在前端层设计的展示效果如下: 滑块最大值笔者设置为20, 最小值为1, 对应的当滑块设置为最大值时, gif的播放速度最大..., 每张图片停留间隔为0.1s, 滑块为最小值1时, gif播放速度最小, 每张图片停留2s, 根据这个规律我们得到了如下规律: 具体代码如下: const handleSpeed = (v) =>...使用file-saver实现前端下载文件 我们只需要把生成的gif图片, 传递给file-saver模块中, 使用其提供的API即可下载文件, 这里在之前文章笔者也介绍过了, 这里直接上代码: import

    1.1K10

    基于 HTML5 的工业互联网云平台监控机房 U 位 顶

    this.rackBuild) { this.rackBuild = new RackBuild(this);// 此类中定义了场景的中间列表部分,右边拓扑图部分以及对应的逻辑...= listView.getDataAt(e);// 传入逻辑坐标点或者交互event事件参数,返回当前点下的数据元素 listView.sm().ss(data);// 在拖拽的过程中设置列表组件中的被拖拽的元素被选中...); self.dnd = null; } } 设备拖动 ?..._oldPosition); } } } 代码中的 showDragHelper 就是在设备拖动的过程中,显示在机柜上,设备下的作为占位的绿色的矩形,为了方面看到当前移动的位置在机柜上显示的位置...工业互联网云平台可涉及到工业生产的方方面面,应用在工厂以及内部设备工作运行以及所回传数据的可视化,可以将任一时间段的数据以轨迹图、仪表盘等各种方式加以展现,工业互联网云平台可以广泛应用于智慧城市的各个领域

    1.5K30
    领券