vue不操作dom实现图片轮播的示例代码
本文介绍了vue不操作dom实现图片轮播的示例代码,分享给大家,具体如下:
效果
宽度为1190px且水平居中的轮播盒子;
中间是当前显示的默认尺寸图片;
左右两边是预显示的小尺寸图片;
轮播从右至左,图片逐渐放大。
做普通平滑轮播也可以参照这个思路
html
css
我们要写上三个li不同位置的样式和一个li默认位置的的样式。
分别是:
左边位置的dom样式;
中间位置的dom样式;
右边位置的dom样式;
默认位置的dom样式。
其中,默认的dom隐藏在中间展示的dom下面。
看图:
图中:
ul的样式:
ul{
position:relative;
width:1190px;
height:500px;
margin:0auto;
display:flex;
}
紫色部分是默认的li的dom样式,设置在整个ul水平且垂直居中的位置
ul>li{
position:absolute;
width:480px;
min-width:480px;
height:400px;
top:50px;
bottom:50px;
left:355px;
font-size:0; /*去除img标签留白,与轮播无关*/
overflow:hidden;
background:white;
box-shadow:0010px0#dddddd;
transition:0.6s;
z-index:1;
}
红色部分是左边的li的dom样式,设置在整个ul水平靠左、垂直居中的位置
ul>.demo-left{
left:0;
z-index:2;
}
黑色部分是中间需要展示的li的dom样式,设置在整个ul水平靠右、垂直居中的位置
ul>.demo-active{
width:600px;
min-width:600px;
height:500px;
top:0;
bottom:0;
left:295px;
z-index:3;
}
蓝色部分是右边的li的dom样式,设置在整个ul水平靠右、垂直居中的位置
ul>.demo-right{
left:710px;
z-index:2;
}
图片水平且垂直居中,可自定义设置,与轮播无关
ul>li>img{
position:absolute;
width:100%;
top:0;
right:0;
bottom:0;
left:0;
margin:auto;
}
vue
exportdefault{
name:"demo",
data(){
return{
demoList:[ //图片列表
{
id:"1",
src:"图片路径"
},
{
id:"2",
src:"图片路径"
},
{
id:"3",
src:"图片路径"
},
{
id:"4",
src:"图片路径"
},
{
id:"5",
src:"图片路径"
}
],
demoActive:0, //当前显示的li下标,设置为0,表示首次加载显示第一张图片
demoTimer:null //定时器,声明demoTimer方便停止轮播和重新开始轮播
}
},
methods:{
//根据返回值给li添加className
demoStyle(index){
if(index==this.demoActive-1)return0;
if(index==this.demoActive)return1;
if(index==this.demoActive+1)return2;
if(this.demoActive==0&&index==this.demoList.length-1)return0;
if(this.demoActive==this.demoList.length-1&&index==0)return2;
},
//轮播执行
demoCarousel(){
this.demoActive++;
if(this.demoActive>this.demoList.length-1){
this.demoActive=0;
}
}
},
mounted(){
let_self=this;
_self.$nextTick(function(){
//开始轮播,3秒一次
_self.demoTimer=setInterval(_self.demoCarousel,3000);
});
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。