很喜欢bilibili上的轮播图造型,这次就来自己写一下B站上的轮播图吧。
首先,B站分旧版和新版,仔细观察会发现,轮播图用的明显不是一套代码,因为旧版轮播图,播到最后一张时就倒回去了,是的,因为每一张图都有过渡,必须遵循这个规则,而且不可能第一张跑在最后一张的后面,这样用户体验不是很好,但我们还是要来做一下这种轮播图。
本次采用Vue框架进行开发,当然原生js和JQuery也可以,但是Vue支持数据双向绑定,响应速度快,简单,更便于维护。
旧版轮播图
代码如下:
1 |
|
实现效果如图:
这种轮播图原理是一串图片通过浮动拼在一起,利用marginLeft的位移作为动画实现的,比较容易实现,缺点是中间隔几个图的时候点击感觉比较晃,而且不是无缝轮播。
新版轮播图
接下来我们就来实现一下无缝轮播图,也就是新版B站首页所用的。
代码如下:
1 |
|
这种轮播图比起上一种要复杂的多,但是看起来非常舒服,甚至比swiper的轮播图还要高档,给人的感觉就好像是两张图在相互切换,其他图在怎么变换根本看不出来。
根据我仔细的观察,分析出了原理,主要是通过translate3d变换位移,还需要加上叠放次序zindex,不然顺序会乱,你会看到其中一张图在过渡的时候压到其他图,这里的过渡要分开加,而不是写在CSS中,不是无脑加,第一张往最后一张图后面移动时不能有过渡动画,重点还要考虑第一张图和最后一张图的位置关系,这里一个过渡0.25s和一个过渡0.55s并不是没有道理,如果都设为0.55s可能会看到其它图的过渡惨杂进来
实现效果如图: