vant
vant copied to clipboard
[Bug Report] swipe 连续滑动会闪烁,下一个滑动的item动画消失,直接无动画的向左偏移未知像素
设备 / 浏览器
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的闪烁
非常感谢作者对这么优秀的ui框架所作出的贡献,,这个问题是不是不太好解决呢,我也会在不忙的时候尝试理解一下源码, 如果问题得到解决就太好了,我将献出我的第一杯github sponsor咖啡以此来感谢作者。
是两张图片的情况吗,可以看看是不是跟这个 issue 的问题类似:https://github.com/youzan/vant/issues/6004
是两张图片的情况吗,可以看看是不是跟这个 issue 的问题类似:#6004
不是,,我发的vant文档所有swipe的示例都有这个问题,,每个轮播从前往后或者从后往前快速滑动,都会很明显感觉到闪烁,,大概发生于前一个离开新的一个进入马上恢复原位的动画过程中,如果发生点击,就会闪一下,,新的swipe item会向左瞬移20px 左右大概,,而且无论是左滑还是右滑,,,都是向左瞬移。。。经测试iphone12 和 华为mate30都有这种情况,可以推断不是兼容性问题,,(猜测可能是在动画过程中如果发生touchstart,,计算的位置有些bug,,导致瞬移了)
是两张图片的情况吗,可以看看是不是跟这个 issue 的问题类似:#6004
我好像大致搞懂了什么原因,,因为swipe切换时候的动画使用的是 500ms transition。当动画正在进行中时,我进行touchmove,那么swipe会在500ms动画结束的位置开始进行位移,而不是当前动画进行到的位置作为起始进行位移。。就导致原来动画剩余的过程直接被忽略,产生的瞬移现象,,这个解决起来好像有些麻烦呢。。。不知道作者对这种现象有什么想法
明白了👌
如果是在切换的 500ms 期间快速进行操作,确实有瞬移的现象,这个情况出现的概率不大,在可接受范围内。
如果要做优化的话,逻辑上与 Picker 组件的动画类似,需要在 touchstart 时获取当前的 translate 位置进行操作
明白了👌
如果是在切换的 500ms 期间快速进行操作,确实有瞬移的现象,这个情况出现的概率不大,在可接受范围内。
如果要做优化的话,逻辑上与 Picker 组件的动画类似,需要在 touchstart 时获取当前的 translate 位置进行操作
em....其实这个体验还是不太好,,就像手机系统,或者mac系统,,两个屏快速切换的话一直闪来闪去是不可接受的。。