国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

VUE開發(fā)一個圖片輪播的組件示例代碼

2019-11-19 17:17:28
字體:
來源:轉載
供稿:網友

本人剛學習vue,用vue做了個圖片輪播,下面我來記錄一下,有需要了解VUE開發(fā)一個圖片輪播的組件的朋友可參考。希望此文章對各位有所幫助。

完成效果圖如下:

vue開發(fā)的思路主要是數(shù)據(jù)綁定,代碼如下:

<template> <div ref="root" style="user-select: none;-webkit-user-select: none;overflow: hidden">  <div class="sliderPanel"     :class="{transitionAni:ani}"     :style="{height:height,transform:translateX}">   <div v-for="item in itemList" class="verticalCenter picbox" :style="{left:item.x+'px'}">    <img :style="{width:width,top:top}" :src="item.url" style="min-height: 100%">   </div>  </div>  <div @click="clickLeft" class="arrowLeft verticalCenter horizaCenter">   <img src="./image/arrow.png" style="transform: rotate(180deg)">  </div>  <div @click="clickRight" class="arrowRight verticalCenter horizaCenter">   <img src="./image/arrow.png">  </div>  <div class="arrowBottom verticalCenter horizaCenter" >   <img src="./image/arrow.png" style="transform: rotate(90deg) scale(0.7)">  </div>  <div class="sliderBar horizaCenter">   <div v-for="(item,index) in imgArray" @click="clickSliderCircle(index)" class="circle" :class="{circleSelected:item.selected}">   </div>  </div> </div></template><script> const SCREEN_WIDTH=document.body.clientWidth const SCREEN_HEIGHT=document.body.scrollHeight var left,center,right var selectIndex=0 var count=0 var second=3//slider 時間間隔 var timer=null var ani=null var debugScale=1.0//測試用可調整為小于1 var Direction={left:'left',right:'right'}; var autoDirection=Direction.right var canClick=true export default({  data:function(){   return{    width:'100%',    height:SCREEN_HEIGHT+'px',    top:0,    ani:true,    translateX:'scale('+debugScale+') translateX(0px)',    imgArray:[     {      x:0,      title1:'現(xiàn)在,在您的實驗室',      tilte2:'也可以輕松完成無創(chuàng)DNA產前檢測',      title3:'了解詳細流程',      click_url:'http://www.berrygenomics.com/products/nextseq-cn500/cn500test/',      url:'static/image/1.jpg',      selected:false,     },     {      x:0,      title1:'Sequel開啟新基因組時代',      tilte2:'覆蓋十余種胎兒染色體疾病,體驗升級,呵護加倍',      title3:'了解更多',      click_url:'http://www.berrygenomics.com/products/nextseq-cn500/cn500test/',      url:'static/image/2.jpg',     },     {      x:0,      title1:'BRCA1/2全外顯子基因突變檢測',      tilte2:'也可以輕松完成無創(chuàng)DNA產前檢測',      title3:'了解詳細流程',      click_url:'http://www.berrygenomics.com/products/nextseq-cn500/cn500test/',      url:'static/image/3.jpg',     },     {      x:0,      title1:'現(xiàn)在,在您的實驗室',      tilte2:'也可以輕松完成無創(chuàng)DNA產前檢測',      title3:'了解詳細流程',      click_url:'http://www.berrygenomics.com/products/nextseq-cn500/cn500test/',      url:'static/image/4.jpg',     },     {      x:0,      title1:'現(xiàn)在,在您的實驗室',      tilte2:'也可以輕松完成無創(chuàng)DNA產前檢測',      title3:'了解詳細流程',      click_url:'http://www.berrygenomics.com/products/nextseq-cn500/cn500test/',      url:'static/image/5.jpg',     },     {      x:0,      title1:'現(xiàn)在,在您的實驗室',      tilte2:'也可以輕松完成無創(chuàng)DNA產前檢測',      title3:'了解詳細流程',      click_url:'http://www.berrygenomics.com/products/nextseq-cn500/cn500test/',      url:'static/image/6.jpg',     },     {      x:0,      title1:'現(xiàn)在,在您的實驗室',      tilte2:'也可以輕松完成無創(chuàng)DNA產前檢測',      title3:'了解詳細流程',      click_url:'http://www.berrygenomics.com/products/nextseq-cn500/cn500test/',      url:'static/image/7.jpg',     },     {      x:0,      title1:'現(xiàn)在,在您的實驗室',      tilte2:'也可以輕松完成無創(chuàng)DNA產前檢測',      title3:'了解詳細流程',      click_url:'http://www.berrygenomics.com/products/nextseq-cn500/cn500test/',      url:'static/image/8.jpg',     }    ],    itemList:[]   }  },  mounted:function(){   ani=this.$refs.root.querySelector('.sliderPanel')   count=this.imgArray.length   this.setIndex(selectIndex)   //自動滾動切換圖片   this.slideAuto(second)  },  methods:{   clickLeft:function(){     if(!canClick) return false    autoDirection=Direction.left    this.slideAuto(second)    this.moveLeftAni()    canClick=false   },   clickRight:function(){    if(!canClick) return false    autoDirection=Direction.right    this.slideAuto(second)    this.moveRightAni()    canClick=false   },   slideRight:function () {    selectIndex++    if(selectIndex+1>count){     selectIndex=0    }else if(selectIndex<0){     selectIndex=count-1    }    this.setIndex(selectIndex)   },   slideLeft:function () {    selectIndex--    if(selectIndex+1>count){     selectIndex=0    }else if(selectIndex<0){     selectIndex=count-1    }    this.setIndex(selectIndex)   },   clickSliderCircle:function (index) {    this.slideAuto(second)    this.setIndexPre(index)   },   setIndexPre:function (index) {    if(!canClick) return false    canClick=false    if(index==selectIndex)return    var leftIndex=index    var centerIndex=selectIndex    var rightIndex=index    for(var i=0;i<count;i++){     if(i==selectIndex){      this.imgArray[i].selected=true     }else{      this.imgArray[i].selected=false     }    }    left=this.imgArray[leftIndex]    center=this.imgArray[centerIndex]    right=this.imgArray[rightIndex]    left=JSON.parse(JSON.stringify(left))    right=JSON.parse(JSON.stringify(right))    left.x=-SCREEN_WIDTH    center.x=0    right.x=SCREEN_WIDTH    left.index=leftIndex    center.index=centerIndex    right.index=rightIndex    this.itemList=[left,center,right]    if(index>selectIndex){     autoDirection=Direction.right;      +function(obj){      obj.anicompted(       'scale('+debugScale+') translateX('+0+'px)',       'scale('+debugScale+') translateX('+-SCREEN_WIDTH+'px)',       function(){        obj.setIndex(index)       })     }(this)     //右移    }else if(index<selectIndex){     //左移     autoDirection=Direction.left;     +function(obj){      obj.anicompted(       'scale('+debugScale+') translateX('+0+'px)',       'scale('+debugScale+') translateX('+SCREEN_WIDTH+'px)',       function(){        obj.setIndex(index)       })     }(this)    }   },   setIndex:function (index) {    var leftIndex=index-1    var centerIndex=index    var rightIndex=index+1    if(index<=0){     index=0     leftIndex=count-1     centerIndex=index     rightIndex=index+1    }else if(index>=count-1){     index=count-1     leftIndex=index-1     centerIndex=index     rightIndex=0    }    selectIndex=index    for(var i=0;i<count;i++){      if(i==selectIndex){       this.imgArray[i].selected=true      }else{       this.imgArray[i].selected=false      }    }    left=this.imgArray[leftIndex]    center=this.imgArray[centerIndex]    right=this.imgArray[rightIndex]    left.x=-SCREEN_WIDTH    center.x=0    right.x=SCREEN_WIDTH    left.index=leftIndex    center.index=centerIndex    right.index=rightIndex    this.itemList=[left,center,right]   },   slideAuto:function () {     clearInterval(timer);     +function (obj) {      timer=setInterval(function () {       if(autoDirection==Direction.left){        obj.moveLeftAni()       }else{        obj.moveRightAni()       }      },second*1000)     }(this)   },   moveLeftAni:function(){     +function(obj){      obj.anicompted(       'scale('+debugScale+') translateX('+0+'px)',       'scale('+debugScale+') translateX('+SCREEN_WIDTH+'px)',       function(){        obj.slideLeft()       })     }(this)   },   moveRightAni:function(){    +function(obj){      obj.anicompted(       'scale('+debugScale+') translateX('+0+'px)',       'scale('+debugScale+') translateX('+-SCREEN_WIDTH+'px)',       function(){        obj.slideRight()       })     }(this)   },   anicompted:function(fromStr,toStr,callBack){    var handler=null,obj=this    handler=function(){     ani.removeEventListener('webkitTransitionEnd',handler,false)     callBack()     obj.ani=false     obj.translateX=fromStr     canClick=true    }    ani.removeEventListener('webkitTransitionEnd',handler,false)    ani.addEventListener('webkitTransitionEnd',handler,false)    this.ani=true    this.translateX=toStr   }  } })</script><style scoped> .transitionAni{  transition: all 0.8s cubic-bezier(.23,1,.32,1);  /*transition: transform 1s;*/ } .arrowLeft{  transition: all 0.4s ease;  width: 60px;  height: 60px;  position: absolute;  left: 15px;  top: 50%;  margin-top: -30px;  background: rgba(0,0,0,0.6);  border-radius: 6px; } .arrowLeft:hover{  background: rgba(0,0,0,0.8);  transform: scale(1.1); } .arrowRight{  transition: all 0.4s ease;  width: 60px;  height: 60px;  position: absolute;  right: 15px;  top: 50%;  margin-top: -30px;  background: rgba(0,0,0,0.6);  border-radius: 6px; } .arrowRight:hover{  background: rgba(0,0,0,0.8);  transform: scale(1.1); } .sliderBar{  width:100%;height: auto;position: absolute;bottom: 50px; } .circle{  width: 15px;  height: 15px;  background: rgba(0,0,0,0.7);  border-radius: 50%;  display: table-cell;  margin-right: 3px;  transition: all 0.5s ease; } .circle:hover{  background: #C7015C;  transform: scale(1.15); } .circleSelected{  background: #C7015C;  transform: scale(1.15); } .arrowBottom{  width: 80px;  height: 50px;  position: absolute;  bottom: -15px;  left: 50%;  margin-left: -40px;  background: #C7015C;  border-top-left-radius: 10px;  border-top-right-radius: 10px;  transition: all 0.5s ease-out; } .arrowBottom:hover{  transform: translateY(-10px);  background: deeppink; } .picbox{  width: 100%;  height: 100%;  position: absolute;  top: 0;  overflow: hidden;  /*transform: scale(0.9);*/  /*opacity: 0.2;*/  transition: all 0.45s ease; } /*@keyframes arrowOut-animation {*/  /*from{*/   /*transform: translateY(0px);*/  /*}*/  /*to{*/   /*transform: translateY(15px);*/   /*!*width:200px;*!*/  /*}*/ /*}*/ /*@keyframes arrowIn-animation {*/  /*from{*/   /*transform: translateY(15px);*/  /*}*/  /*to{*/   /*transform: translateY(0px);*/   /*!*height: 200px;*!*/  /*}*/ /*}*/ /*.arrowOut{*/  /*animation: arrowOut-animation;*/  /*animation-duration: 0.5s;*/  /*animation-timing-function: ease-out;*/  /*animation-fill-mode:forwards;*/ /*}*/ /*.arrowIn{*/  /*animation: arrowIn-animation;*/  /*animation-duration: 0.5s;*/  /*animation-timing-function:ease-out;*/  /*animation-fill-mode:forwards;*/ /*}*/</style>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江阴市| 松原市| 武威市| 竹北市| 余庆县| 唐山市| 清水河县| 承德市| 苗栗市| 汤阴县| 阿巴嘎旗| 泸水县| 平阴县| 曲松县| 高雄县| 外汇| 台东市| 弥勒县| 绍兴县| 股票| 蒙山县| 长泰县| 霍城县| 新化县| 南京市| 孟村| 新源县| 孝昌县| 舟山市| 绥芬河市| 铁岭市| 三原县| 深圳市| 双鸭山市| 安庆市| 五指山市| 大方县| 华蓥市| 柳江县| 丰原市| 双牌县|