父元素设置overflow:scroll时vuedraggable组件出现奇怪效果的解决方案

当vuedraggable组件在具有overflow:scroll的父元素中使用时,遇到了拖动元素闪烁和快照残缺的奇怪效果。经过研究和尝试,通过调整CSS动画和监听choose事件,成功解决了这两个问题。设置animation属性以避免闪烁,通过choose事件检测并修正scrollTop以防止快照残缺。
摘要由CSDN通过智能技术生成

在使用 vuedraggable 做拖拽效果时,因为要用到滚动条而使用了 overflow: scroll,导致了两个奇怪的效果,虽然折腾了一段时间,不过最后我还是将这些奇怪的 bug 解决了。

奇怪的效果
  1. 如果拖动 item,将光标移动到某两个 item 之间的界线上,有时会出现 闪烁 现象,原因是 item 不断地修改最终位置,导致 list 不停地改变。
  2. 如果item 刚好被父元素(设置了 overflow:scroll 的 容器元素)遮住,拖拽的时候,跟随光标的 item 快照是 残缺 的。
解决过程

首先看了官方文档,看的快睡着了。然后看了看 issue,貌似没有人提交类似的 issue,大概这也算不上 bug 吧,大概论坛有解决的方法。搜索引擎也查过,没发现什么有用的文章。

期间,找到一个官方给的 demo,修改了css样式:父元素设置了固定高度,并添加 overflow:scroll,并将 item 的高度提高。测试发现:还是出现了我遇到的问题。

后来又认真地看了官方文档,甚至想看看源码实现(太耗费时间放弃)。

最后决定从 vuedraggable 的 move 事件入手,试着解决第一个问题。原本我以为只有新位置刚好在顶部或底部时,才会出现疯狂闪烁的鬼畜现象。搞完后发现,任

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值