vue 图片放大左右切换
html部分
<div id="app"> <div class="imgList"> <img :src="value" v-for="(value,index) in imgList" :key="value" @click="bigImg(index)"> </div> <div class="imgMask" v-if="showBigImg" @click.stop="showBigImg=!showBigImg"> <img class="prev" @click.stop="prev" src="http://cdn.attach.qdfuns.com/notes/pics/201708/28/152301mz6lgplg15rnnrl8.png"> <div class="showImg" > <img class="bigImg" :src="imgList[num]"> </div> <img class="next" @click.stop="next" src="http://cdn.attach.qdfuns.com/notes/pics/201708/28/152246ozacp0x2pxcecme2.png"> </div> </div>
css 部分
html,body,#app { height: 100%; width:100%; } *{ margin: 0; padding:0; box-sizing:border-box; } .imgList{ margin: 0 auto; width:900px; display: flex; flex-direction:row; flex-wrap:wrap; } .imgList img{ width:300px; } .imgMask{ position: absolute; height: 100%; width:100%; top:0; left:0; z-index: 100; background:rgba(0,0,0,.6); } .showImg{ height:550px; width:800px; position: absolute; left:50%; top:50%; transform:translate(-50%,-50%); border:10px solid #fff; } .bigImg{ width:100%; height:100%; } .prev{ position: absolute; top:50%; left:10px; width:40px; transform:translate(10px,-50%); } .next{ width:40px; transform:translate(10px,-50%); position: absolute; top:50%; right:20px; }
js部分
var app = new Vue({ el:"#app", data(){ return{ showBigImg:false, num:0, imgList:[ "http://cdn.attach.qdfuns.com/notes/pics/201708/28/152247enooreornrre1zca.jpg", "http://cdn.attach.qdfuns.com/notes/pics/201708/28/152606vaqgcsqzyhw9dd0q.jpg", "http://cdn.attach.qdfuns.com/notes/pics/201708/28/152427alkrlnhtkkghjjeu.jpg", "http://cdn.attach.qdfuns.com/notes/pics/201708/28/152247c00jnfwzfjqakjrj.jpg", "http://cdn.attach.qdfuns.com/notes/pics/201708/28/152247nm4jbbkbbklg4blp.jpg", "http://cdn.attach.qdfuns.com/notes/pics/201708/28/152247etznl2kk9nnk1i2n.jpg" ] } }, methods:{ bigImg(index){ this.showBigImg = true; this.num = index; }, prev(){ if(this.num==0){ this.num =6 } this.num--; console.log(this.num) }, next(){ if(this.num==5){ this.num=-1; } this.num++; } } })