vant icon indicating copy to clipboard operation
vant copied to clipboard

[Bug Report] swipe 连续滑动会闪烁,下一个滑动的item动画消失,直接无动画的向左偏移未知像素

Open ganshiqingyuan opened this issue 3 years ago • 6 comments

设备 / 浏览器

ios上的chrome safari

Vant 版本

2.12.2

Vue 版本

2.6.7

重现链接

https://vant-contrib.gitee.io/vant/mobile.html#/zh-CN/swipe

描述问题

swipe 连续滑动会闪烁,下一个滑动的item动画消失,直接无动画的向左偏移未知像素,,对比一下vant的swipe然后在对比下手机app里的左右滑动切换tab栏很明显感受到vant的闪烁

ganshiqingyuan avatar Oct 26 '21 02:10 ganshiqingyuan

非常感谢作者对这么优秀的ui框架所作出的贡献,,这个问题是不是不太好解决呢,我也会在不忙的时候尝试理解一下源码, 如果问题得到解决就太好了,我将献出我的第一杯github sponsor咖啡以此来感谢作者。

ganshiqingyuan avatar Oct 27 '21 02:10 ganshiqingyuan

是两张图片的情况吗,可以看看是不是跟这个 issue 的问题类似:https://github.com/youzan/vant/issues/6004

chenjiahan avatar Oct 27 '21 06:10 chenjiahan

是两张图片的情况吗,可以看看是不是跟这个 issue 的问题类似:#6004

不是,,我发的vant文档所有swipe的示例都有这个问题,,每个轮播从前往后或者从后往前快速滑动,都会很明显感觉到闪烁,,大概发生于前一个离开新的一个进入马上恢复原位的动画过程中,如果发生点击,就会闪一下,,新的swipe item会向左瞬移20px 左右大概,,而且无论是左滑还是右滑,,,都是向左瞬移。。。经测试iphone12 和 华为mate30都有这种情况,可以推断不是兼容性问题,,(猜测可能是在动画过程中如果发生touchstart,,计算的位置有些bug,,导致瞬移了)

ganshiqingyuan avatar Oct 27 '21 07:10 ganshiqingyuan

是两张图片的情况吗,可以看看是不是跟这个 issue 的问题类似:#6004

我好像大致搞懂了什么原因,,因为swipe切换时候的动画使用的是 500ms transition。当动画正在进行中时,我进行touchmove,那么swipe会在500ms动画结束的位置开始进行位移,而不是当前动画进行到的位置作为起始进行位移。。就导致原来动画剩余的过程直接被忽略,产生的瞬移现象,,这个解决起来好像有些麻烦呢。。。不知道作者对这种现象有什么想法

ganshiqingyuan avatar Oct 27 '21 09:10 ganshiqingyuan

明白了👌

如果是在切换的 500ms 期间快速进行操作,确实有瞬移的现象,这个情况出现的概率不大,在可接受范围内。

如果要做优化的话,逻辑上与 Picker 组件的动画类似,需要在 touchstart 时获取当前的 translate 位置进行操作

chenjiahan avatar Oct 28 '21 01:10 chenjiahan

明白了👌

如果是在切换的 500ms 期间快速进行操作,确实有瞬移的现象,这个情况出现的概率不大,在可接受范围内。

如果要做优化的话,逻辑上与 Picker 组件的动画类似,需要在 touchstart 时获取当前的 translate 位置进行操作

em....其实这个体验还是不太好,,就像手机系统,或者mac系统,,两个屏快速切换的话一直闪来闪去是不可接受的。。

ganshiqingyuan avatar Oct 28 '21 02:10 ganshiqingyuan