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

如何在使用react-beautiful dnd删除元素后保持适当的间距?

在使用react-beautiful-dnd删除元素后保持适当的间距,可以通过以下步骤实现:

  1. 确保每个被删除的元素都有一个唯一的标识符,例如使用元素的ID。
  2. 在删除元素之前,记录被删除元素的位置和尺寸信息。
  3. 在删除元素后,更新剩余元素的位置和尺寸信息。
  4. 根据更新后的位置和尺寸信息,计算并应用适当的间距。

具体实现步骤如下:

  1. 在react-beautiful-dnd中,当元素被删除时,可以通过监听onDragEnd事件来获取删除元素的信息。在onDragEnd事件处理程序中,可以通过source属性获取被删除元素的索引和ID等信息。
代码语言:txt
复制
onDragEnd = (result) => {
  const { source, destination } = result;
  if (!destination) {
    // 元素被删除
    const deletedItemId = this.state.items[source.index].id;
    // 执行删除操作
    this.deleteItem(deletedItemId);
  }
};
  1. 在删除元素之前,可以使用getBoundingClientRect()方法获取被删除元素的位置和尺寸信息,并将其保存在状态中。
代码语言:txt
复制
deleteItem = (deletedItemId) => {
  const deletedItem = document.getElementById(deletedItemId);
  const deletedItemRect = deletedItem.getBoundingClientRect();
  // 保存被删除元素的位置和尺寸信息
  this.setState({ deletedItemRect });
  // 执行删除操作
  // ...
};
  1. 在删除元素后,更新剩余元素的位置和尺寸信息。可以使用getBoundingClientRect()方法获取剩余元素的位置和尺寸信息,并将其保存在状态中。
代码语言:txt
复制
updateRemainingItems = () => {
  const remainingItems = document.getElementsByClassName('item');
  const remainingItemsRect = Array.from(remainingItems).map((item) =>
    item.getBoundingClientRect()
  );
  // 保存剩余元素的位置和尺寸信息
  this.setState({ remainingItemsRect });
};
  1. 根据更新后的位置和尺寸信息,计算并应用适当的间距。可以通过比较被删除元素和剩余元素的位置信息,计算出它们之间的间距,并将间距应用到剩余元素上。
代码语言:txt
复制
applySpacing = () => {
  const { deletedItemRect, remainingItemsRect } = this.state;
  const spacing = 10; // 设置间距大小

  // 计算间距
  const topSpacing = deletedItemRect.top - remainingItemsRect[0].top;
  const leftSpacing = deletedItemRect.left - remainingItemsRect[0].left;

  // 应用间距
  Array.from(remainingItems).forEach((item, index) => {
    item.style.transform = `translate(${leftSpacing}px, ${topSpacing}px)`;
    topSpacing += remainingItemsRect[index].height + spacing;
  });
};

以上是一种实现方式,具体的实现可能会根据项目的需求和代码结构有所不同。在实际开发中,可以根据具体情况进行调整和优化。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云数据库MySQL(CMYSQL)等。您可以访问腾讯云官网了解更多产品信息和详细介绍。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

之所以要规定服务器尺寸,是为了使服务器保持适当尺寸以便放在铁质或铝质机架上。机架上有固定服务器螺孔,以便它能与服务器螺孔对上号,再用螺丝加以固定好,以方便安装每一部服务器所需要空间。...toolbar 工具条中总共元素就三个:添加机柜,编辑机柜和删除机柜。...实现了添加和编辑机柜两个功能,删除机柜功能实现上非常容易,只要将节点从拓扑图和树上移除即可: handleRemoveRack: function(){// 在拓扑图上删除机柜,并删除树上此机柜对应节点...).remove(ld);// 删除 gv 中节点 } } 列表中元素拖拽 ?....ss(data);// 在拖拽过程中设置列表组件中被拖拽元素被选中 if (dnd && dnd.parentNode) { document.body.removeChild

2.4K40

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

布局结束记得将最外层组件最底层 div 添加到 body 中,HT 组件一般都会嵌入 BorderPane、SplitView 和 TabView 等容器中使用,而最外层HT组件则需要用户手工将...toolbar 工具条中总共元素就三个:添加机柜,编辑机柜和删除机柜。...实现了添加和编辑机柜两个功能,删除机柜功能实现上非常容易,只要将节点从拓扑图和树上移除即可: handleRemoveRack: function(){// 在拓扑图上删除机柜,并删除树上此机柜对应节点...).remove(ld);// 删除 gv 中节点 } } 列表中元素拖拽 ?....ss(data);// 在拖拽过程中设置列表组件中被拖拽元素被选中 if (dnd && dnd.parentNode) { document.body.removeChild

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

    触发dragstart事件,其他元素mousemove,mouseover,mouseenter,mouseleave,mouseout事件均不会被触发了 drag :当被拖拽元素被拖拽时触发...可以在这里设置dropEffect值,事件默认行为是将dropEffect设置为none      [b]. 该事件是被拖拽元素在目标元素上移动一段时间才触发      [c]....Chrome37下,若{Element} image为无效元素时,将不会触发dragstart事件其他事件。...Chrome和FF支持任意非空字符串作为format    5. 当没有填写第二个入参时,则会根据format来删除相应数据项    6. ...,会发现使用HTML5 DnD API实现拖拽效果代码量并不比HTML4中少,效果也并不理想(个人水平有限优化也没做好),最让人心酸是各浏览器在细节上还是有差异(兼容性是前端工程师一直痛啊)。

    4K100

    20个 CSS 快速提升技巧

    1、使用CSS重置(reset) css重置库normalize.css已经被使用很多年了,它们可以为你网站样式提供一个比较清晰标准,来确保跨浏览器之间一致性。...大多数项目并不需要这些库包含所有规则,可以通过一条简单规则来应用于布局中所有元素删除所有的margin、padding改变浏览器默认盒模型。...功能,给紧跟其他元素文档流中所有元素设置统一规则 * + * { margin-top: 1.5rem; } 这是一个很棒技巧,可以帮你创建更加均匀类型跟间距。...在上面的列子中,跟在其他元素后面的元素,比如说H3后面的H4,或者一个段落之后一个段落,他们之间至少1.5rems间距(大约为30px) 9、一致垂直结构(Consistent Vertical...rem进行全局大小调整;使用em进行局部大小调整 在设置根目录基本字体大小,例如html字体大小:15px;,可以将包含元素字体大小设置为rem: article { font-size

    3.2K20

    如何提升你CSS技能,掌握这20个css技巧即可

    1、使用CSS重置(reset) css重置库normalize.css已经被使用很多年了,它们可以为你网站样式提供一个比较清晰标准,来确保跨浏览器之间一致性。...大多数项目并不需要这些库包含所有规则,可以通过一条简单规则来应用于布局中所有元素删除所有的margin、padding改变浏览器默认盒模型。...实现这一点,就需要我们理解级联(cascade),以及如何在通用选择器写样式可以继承在其他地方。...在上面的列子中,跟在其他元素后面的元素,比如说H3后面的H4,或者一个段落之后一个段落,他们之间至少1.5rems间距(大约为30px) 9、一致垂直结构(Consistent Vertical...rem进行全局大小调整;使用em进行局部大小调整 在设置根目录基本字体大小,例如html字体大小:15px;,可以将包含元素字体大小设置为rem: article { font-size

    5K20

    文字如何实现完美UI?文本排版设计告诉你

    通常,文本排版设计包括但不限于以下元素。另外,需谨记:手机设计日新月异,手机文本排版设计当然也在与时俱进。我们既要尊重现有规则,但也要保持创新和探索。 以iPhone文本排版设计为例。...这里间距是所有字符和文本间距。有效间距会使文本更易读。通常,字体使用时可以适当调整页面字距,因此你不需要过多关注。但如果你注意这一点,也许会对设计大有裨益。...留白可以带来自由和放松感觉。手机排版留白主要包含:行间距,边距,段落空间。手机排版中适当空间可以帮助用户更好阅读文本,提升界面美感。设计师可以考虑从页面10%到20%范围开始留白。...功能性文本需要突出,可点击元素应该足够大,以便用户可以点击它们。 ? 8. 对齐 通常,文本对齐方式有4种:左,右,中或两端对齐。哪一种在手机排版中更好? 关键是要保持舒适清晰边距。...文本样式 尽可能使用内置文本样式。内置文字样式可让您以视觉上独特方式表达内容,同时保持最佳易读性。

    2.5K70

    CSS实现前端布局更巧妙方案!在 flex 布局中通过使用 margin 实现水平垂直居中以及其他常见前端布局

    让我们一起回顾一下常见方式:justify-content 和 align-items,然后再来探讨一下使用:margin 优势,以及如何在实际项目中使用它。...比如我们希望某些元素靠近并且与其他元素保持一定间距就会比较麻烦了。...以及一些其他情况,垂直排列固定间距、复杂网格布局、混合布局等,justify-content 和 align-items都无法简洁、优雅解决问题。...传统做法使用 justify-content 和 align-items 属性已经被广泛采用,但这种方法有时可能显得不够简洁或灵活。...在适当情况下直接使用 margin 进行布局是一种更优雅、简洁替代方案,可以在 Flexbox 布局中有效地实现居中对齐和一些复杂布局需求。

    9910

    HarmonyOS-UIAbitity-枚举说明——【坚果派-红目香薰】

    Rtl 元素从右到左布局。 Auto 使用系统默认布局方向。 BarState 名称 描述 Off 不显示。 On 常驻显示。 Auto 按需显示(触摸时显示,2s消失)。...Delete 指定当前Transition动效生效在组件删除场景。...SpaceAround Flex主轴方向均匀分配弹性元素,相邻元素间距离相同。第一个元素到行首距离和最后一个元素到行尾距离是相邻元素间距一半。...SpaceEvenly Flex主轴方向均匀分配弹性元素,相邻元素之间距离、第一个元素与行首间距、最后一个元素到行尾间距都完全一样。...Exchange 将源页面元素移动到目标页面元素位置并适当缩放。 FontStyle 名称 描述 Normal 标准字体样式。 Italic 斜体字体样式。

    14110

    iOS 9人机界面指南(一)下篇:UI设计基础 - 腾讯ISUX

    合理地使用动效可以提升用户理解程度和愉悦感;应用过度使用动效会给用户带来迷惑和难以掌控感觉。 如果可以,保持自定义动画和内置动画一致性。用户习惯于内置iOS应用使用精细动画。...当你进行这些元素设计时,牢记以下两点: 每个自定义元素本身都需要具备良好观感和功能性,但它也应该与应用中其他元素保持一致,无论应用中其他元素是自定义还是标准。...当你在你app中使用San Francisco时,iOS会自动在适当时机在文本模式和展示模式中切换。...注:如果你使用应用程序Sketch或Photoshop来生成你设计,那么当你设置字体不小于20点时候,你需要切换到展示模式。iOS会根据字体大小为San Francisco自动调整字间距。...在最小三种文本尺寸中,字间距相对较大;而在最大三中文本尺寸中,字间距相对紧凑。 标题和内容样式使用相同字体尺寸,同时,为了区分标题与内容样式,标题样式使用更重值。

    1.8K21

    AVS之Notifications概述

    注意:用户如何得到通知取决你产品功能,并应与AVS产品功能要求保持一致....Speak指令发送到启动通知AVS产品,并为用户播放所有新通知.播放完成,发送ClearIndicator指令,指示你产品清除任何通知指示符....读取通知,它会在云中存档24小时,然后自动删除.最终用户还可以在通知之间导航,通过说“Alexa, next” or “Alexa, back”,或通过说“Alexa, delete all”.删除通知...用户如何启用通知 用户能够使用Amazon Alexa App 选择通过每个 Alexa skill通知,并在通过其产品上视觉和音频指示器检索到新信息提醒用户.有三种启用通知方法: - 用户可以启动特定...Alexa技能通知,当它第一次通过Alexa Skills Store.启用 - Alexa引导用户访问Amazon Alexa App页面,在那里用户可以启用当前正在使用Alexa skill

    1.3K00

    成为优秀UI设计师,必须了解UI设计规范

    图标与品牌标志一样,在设计时都需要做适当减法,应该尽量用简约线条去表达其含义,应该尽量避免出现线条结构过于复杂设计,而且整体图标都需要保持风格一致,例如图标的线条粗细、边角弧度、图标高度宽度比例...4  视觉大小统一 在进行图标设计时候,我们会使用栅格辅助线来帮助我们更加严格谨慎,但一定不要被辅助线困住,学会灵活运用,保持视觉上大小统一。...所以正确标注方法是给出按钮两边间距,让整个按钮宽度自适应(当然高度还是要固定),这样不论遇到哪种分辨率尺寸,都能够保持相同视觉效果,扩展性极强。...减少干扰:减少界面元素不确定因素,方便用户快速找到自己想要。 快速响应:加快用户读取响应速度,能够避免从远程取数据,就尽量避免。...推荐一个设计规范网站:https://ds.mockplus.cn 图文来自于网络 侵权请告知删除

    82640

    CSS进阶-CSS3多列布局

    内容溢出与断行问题 在多列布局中,长单词或不可分割元素可能导致列宽度计算出错,从而引起内容溢出或断行不当。特别是在设定固定列宽时,若内容无法适应,可能会破坏布局美观。 2....列间间距控制不当 column-gap属性用于设置列间间隔,但初学者往往忽视了它对整体布局影响,导致列间距过大或过小,影响阅读体验。 3....使用word-break和hyphens 为避免长单词导致内容溢出,可以使用word-break: break-word;强制单词换行,或结合hyphens: auto;启用自动断词功能,以保持列内容整洁...当希望列宽度自适应内容时,优先设置column-width;若需固定列数,则使用column-count,并适当调整column-gap以保持美观。 3....兼容性解决方案 利用特性检测(Modernizr)或CSS前缀,为不支持多列布局浏览器提供回退方案,使用传统浮动布局或Flex布局作为替代方案。

    8110

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

    接下来我们看看主要要实现功能点: 纯前端实现图片上传和预览 基于react-beautiful-dnd实现元素自由拖动排序 使用javascript实现生成uuid函数 使用file-saver实现前端下载文件...其中File对象可以是来自用户在一个input元素上选择文件返回FileList对象,也可以来自拖放操作生成DataTransfer对象,还可以是来自在一个HTMLCanvasElement上执行...使用react-beautiful-dnd实现元素自由拖动排序 大家在研究过H5-Dooring | 一款强大开源H5编辑器 就会发现react-dnd这个模块很熟悉, 因为该开源编辑器就使用了react-dnd...(r & 0x3) | 0x8 : r]; } } } return uuid.join(''); } 实现效果如下图: 至于删除图片方法也很简单, 通过图片唯一...id去数组里使用数组fiter方法删除即可. 4.

    1.1K10

    iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

    你不会希望用户在滚动时候看到五花八门内容和状态栏自身元素混合在一起。想要让用户感受到内容区域够大同时,最大限度地保证可读性,请保证在状态栏后面添加一块背景,用以模糊出现在状态栏内容。...如果按钮在导航栏中显得太过拥挤,你可以使用UIBarButtonSystemItemFixedSpace常数来给他们增加适当间距。...标签栏是半透明,展示图标和文字内容,每一项均保持等宽。当用户选中某个标签时,该标签呈现适当高亮状态。...想设计出好看模版图标,可以遵循以下原则: 使用透明度适当黑色或白色 不要使用阴影 进行抗锯齿处理 一个活动模版图大小应该保持在70×70像素左右(高分辨率下),在区域里居中显示。...Value 2布局中,文本和副标题中间垂直间距会让用户专注于副标题第一 个单词。 ? 重要 以上四种单元格样式均支持添加表格视图元素勾选或展开标志。

    10.1K51

    【论文解读】NBNet:抛开复杂网络结构设计,旷世&快手提出子空间注意力模块用于图像降噪

    投影运算其实仅包含线性矩阵运算,经过 适当变形,投影运算是完全可微,在现代神经网络框架中易于实现。 ? 图 1 NBNet网络整体结构 3、NBNet具体实现和损失函数。...NBNet整体结构是典型UNet形式,如上图1,包括4个编码阶段和4个相应解码阶段。下采样使用k4s2卷积操作,上采样使用反卷积。每个卷积层激活函数都使用LeakyReLU。...最后一个解码器输出通过一个线性3×3卷积层输出全局残差(针对有噪声输入而言),再加上输入得到最终去噪结果。...下图是在DND Benchmark上去噪实例。本文方法更好地保持了纹理和锐度。 ? 4、消融实验 (1)为了验证SSA模块有效性,又选择DnCNN为基线模型。...嵌入SSA模块比DnCNN提供了0.55dB。 (2)研究子空间K不同取值影响,下表是在SIDD上实验结果。

    91730

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

    是通过 HTML5 Drag and Drop API 下面是简单实现代码 function dragstart_handler(ev) { // A将目标元素 id 添加到数据传输对象...React-dnd React DnD 是 React 和 Redux 核心作者 Dan Abramov 创造一组 React 工具库,可以帮助您构建复杂拖放接口,同时保持组件解耦性。...react-dnd-touch-backend,因为 react-dnd-html5-backend不支持触摸 DragBox 实现 import { useDrag } from 'react-dnd...,用于约束“拖”和“放”组件关系,如果字符串不一致就无法回调事件,主要是为了避免页面中多个拖放实例 item 就是拖动时候传递数据 end 是拖放结束回调 collect 用于获得拖动状态,...当每次拖动时候,可以生成一个 uuid,然后使用深度优先遍历树数据 从根节点到叶子节点由上至下深度优先遍历树数据。

    5.9K20

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

    游戏中元素拖放操作,棋盘游戏中棋子移动等。...如何使用 使用拖放 API 主要包括以下 3 个步骤: 「定义可拖拽(draggable)元素」:将需要拖动元素标记为可拖拽,并指定相应事件处理逻辑。...当拖动 drag-source 元素时,使用 event.dataTransfer.setData() 方法设置了拖动数据,而放置目标元素时,执行 drop事件监听回调方法,实现被拖动元素添加到可放置元素底下...提供了丰富事件和方法,使开发者可以自定义拖放行为。 缺点: 在某些较旧浏览器中可能存在兼容性问题。 拖放操作可能受到设备限制,移动设备上触摸操作。...提供适当视觉反馈和指导,以帮助用户理解和使用拖放功能。 遵循这些建议和注意事项,可以更好地应用拖放 API ,并为用户提供优秀拖放体验。 6.

    25320

    CSS 常用样式集锦

    line-through:添加删除线。 二、首行缩进(text-indent) 作用:设置段落首行缩进距离。 通常以长度单位( px、em)或百分比表示缩进量。...三、字符间距(letter-spacing) 作用:调整字符之间间距。 以长度单位表示, 1px 表示字符间距为 1 像素,0.5em 表示字符间距为 0.5 个字符宽度。...pre:保留空白和换行,如同 HTML 中 标签。 九、文本截断(text-overflow) 作用:当文本溢出时,决定如何显示。 通常与特定属性组合使用。...none:图片保持其原始大小,可能会超出容器。 scale-down:图片会被缩放,直到不超过容器尺寸,类似于 contain,但会选择较小尺寸。...这一组合在网页设计中常用于处理标题、标签等简短文本溢出情况,以保持页面整洁美观。

    6310
    领券