开发日记(9): 如何手写一个滑动渐入渐出效果(H5)

356 阅读1分钟

最终效果

Never 2022-02-02 16.44.19.gif

html

image.png 红色框为给当前区域添加滑动事件;绿色框为当滑动时候为当前标题动态添加类名;

scss

image.png 这里主要放了 滑动时候 渐入渐出逐渐放大和缩小的 css代码;布局用flex就好; 通过transform为元素添加x轴的移动效果,并且伴随放大缩小的 scale

然后通过 transition 监听到 transform和 color的变化,tansform设置为 500ms。

js

image.png

上面为改ui呈现的数据结构;

image.png

image.png

image.png 这块主要是通过 touchstart拿到刚开始的x坐标 touchmove拿到滑动最后的 x坐标 touchend 对开始坐标和最终坐标对比,看是左滑还是右滑。

当开始坐标大于最终坐标为 左滑;

小于为右滑;当当前标题数组只有一条数据则关闭滑动;

左滑右滑切换数据是用 数组的处理方法,对第一条和最后一条数据进行处理,具体用到了 shift 拿到数组第一个item;push 添加到末尾 pop拿到最后一条数据;unshift添加到头部;

image.png 这块主要是在滑动时候为标题盒子添加类名,并且在500ms后去掉和css中的动画效果一致;

总结

大部分的滑动效果都可以用 touchstart拿到刚开始的x坐标 touchmove拿到滑动最后的 x坐标 touchend 对开始坐标和最终坐标对比,看是左滑还是右滑;

一些动画可以用 css3的transition来实现;再配合定时器或者 animation达到重复循环的效果;