当前位置: 首页 > Web前端 > CSS

用vue写一个模仿小书的轮播图

时间:2023-03-30 13:36:09 CSS

原文地址:Bougie的博客先展示最终效果:Vue的理念是用数据驱动view,所以拒绝通过改变margin-top来实现滚动效果的元素。写好css样式后,只需要改变每张图片的class就可以实现轮播效果了。轮播可以看成是两个,如图:写好每个类的样式:$width:800px;//容器宽度$height:300px;//容器高度$bWidth:500px;//大图宽度$sWidth:$width-$bWidth;//小图宽度$sHeight:$height/2;//小图片高度#slider-wrapper{width:$width;身高:$身高;保证金:0自动;游标:指针;背景:#ddd;边界半径:5px;框阴影:01px6pxrgba(0,0,0,0.117647),01px4pxrgba(0,0,0,0.117647);显示:弹性;溢出:隐藏;div{显示:内联块;}}.main-slide{宽度:$bWidth;身高:$身高;向左飘浮;transition:all.4sease;}.extra-slide{宽度:$sWidth;位置:相对;.extra-slide-item{位置:绝对;宽度:$sWidth;身高:$sHeight;左:0;过渡:.4s缓出;;}.extra-slide-middle-first{top:0;z-index:2}.extra-slide-middle-second{top:$sHeight;-index:2}.extra-slide-bottom{top:$height}.extra-slide-hide{display:none!important;}}该模板包含两个轮播:

scripts部分,设置一个nowIndex,定时改变nowIndex所有图片的类根据这个nowIndex来变化:importslideConfigfrom'./slideConfig'constslideLength=slideConfig.lengthexportdefault{name:'slider',data:function(){return{slideConfig:slideConfig,slideInterval:null,nowIndex:0}},方法:{resetIndex(i){returni>slideLength-1?我-slideLength:i},slideClass(i){letnowIndex=this.nowIndexletmap=newMap([[this.resetIndex(nowIndex),'extra-slide-top'],[this.resetIndex(nowIndex+1),'extra-slide-middle-first'],[this.resetIndex(nowIndex+2),'extra-slide-middle-second'],[this.resetIndex(nowIndex+3),'extra-slide-bottom']])返回map.get(i)?map.get(i):'extra-slide-hide'},start(){this.slideInterval=setInterval(()=>{this.nowIindex=this.nowIndex>slideLength-2?0:this.nowIndex+1console.log(this.nowIndex)},2000)},stop(){clearInterval(this.slideInterval)this.slideInterval=null}},mounted(){this.start()},destroyed(){this.stop()}}slideConfig,这里可以写成componentprops:constprefix='/src/assets/'constslideConfig=[{src:prefix+'s1.jpg',title:'Figure1',desc:'描述1'},{src:prefix+'s2.jpg',title:'图2',desc:'描述2'},{src:prefix+'s3.jpg',title:'图3',desc:'描述3'},{src:prefix+'s4.jpg',title:'图4',desc:'描述4'},{src:prefix+'s5.jpg',title:'Figure5',desc:'Description5'},{src:prefix+'s6.jpg',title:'Figure6',desc:'Description6'}]exportdefaultslideConfiggitHub传送门:https://github.com/bougieL/ji...