最终效果
html
红色框为给当前区域添加滑动事件;绿色框为当滑动时候为当前标题动态添加类名;
scss
这里主要放了 滑动时候 渐入渐出逐渐放大和缩小的 css代码;布局用flex就好; 通过transform为元素添加x轴的移动效果,并且伴随放大缩小的 scale
然后通过 transition 监听到 transform和 color的变化,tansform设置为 500ms。
js
上面为改ui呈现的数据结构;
这块主要是通过 touchstart拿到刚开始的x坐标 touchmove拿到滑动最后的 x坐标 touchend 对开始坐标和最终坐标对比,看是左滑还是右滑。
当开始坐标大于最终坐标为 左滑;
小于为右滑;当当前标题数组只有一条数据则关闭滑动;
左滑右滑切换数据是用 数组的处理方法,对第一条和最后一条数据进行处理,具体用到了 shift 拿到数组第一个item;push 添加到末尾 pop拿到最后一条数据;unshift添加到头部;
这块主要是在滑动时候为标题盒子添加类名,并且在500ms后去掉和css中的动画效果一致;
总结
大部分的滑动效果都可以用 touchstart拿到刚开始的x坐标 touchmove拿到滑动最后的 x坐标 touchend 对开始坐标和最终坐标对比,看是左滑还是右滑;
一些动画可以用 css3的transition来实现;再配合定时器或者 animation达到重复循环的效果;