前言
最近在项目中遇到了轮播图的需求,以往都是直接上框架就完事了。但想想自己还是应该多练练手
思路
- 确立样式
- 父容器限制宽高,超出部分隐藏,设置为弹性布局
- 子容器利用
flex-shrink: 0保证容器不被缩小 - 加上左移,右移按钮和轮播图指示器
- 图片滚动
- 设置一个滚动变量
currentIndex(从0开始),表示当前展示的是第几张 - 设置
setInterval让滚动变量自增,并在生命周期函数中调用 - 设置一个计算属性,返回值为每次滚动的距离:(子容器的宽度+外边距)*滚动变量
- 设置一个滚动变量
1 | transStyle(){ |
- 无缝滚动
- 在滚动到最后一张图片时,会出现这样的尴尬情况
那么只要我将图片列表复制一份添加在在尾部,并在滚动变量currentIndex==图片数量时,把currentIndex重置为0,同理,左移时如果滚动变量currentIndex==0,将currentIndex置为图片数量-1,这样就算无缝滚动啦。
html
1 | <template> |
js
1 | <script> |
css
1 | <style lang="less" scoped> |