左滑删除时元素抖动怎么解决?
我在做移动端列表左滑删除功能时,滑动到一半手指松开,元素会突然抖动一下,这是什么问题啊?
用的是transform平移实现滑动,CSS写了这样的过渡:
.item {
transition: transform 0.2s;
will-change: transform;
}
.swipe-left {
transform: translateX(-120px);
}
已经加了will-change属性,移动端也试过把backface-visibility设为hidden,但问题依旧存在。用手指快速滑动到删除区域再松开没问题,慢一点松开就抖一下…
关键点:
1.
touchmove阻止默认行为,防止浏览器干扰。2. 在
touchend时判断滑动距离,如果超过阈值就应用删除样式,否则复位。3. 不要用太长的过渡时间,0.2s就够用了,再长会加重抖动感。
试试这段代码,基本能搞定。如果还有问题,可能得看看其他地方有没有多余的样式影响了。