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

首頁 > 語言 > JavaScript > 正文

vue實現圖片滾動的示例代碼(類似走馬燈效果)

2024-05-06 15:21:10
字體:
來源:轉載
供稿:網友

上次寫了一個簡單的圖片輪播,這個相當于在上面的一些改進。這個組件除了可以進行圖片滾動外,也可以嵌入任何內容的標簽進行滾動,里面用了slot進行封裝。

父:

<template> <div id="app">  <er-carousel-index :typeNumber=2 :pageNumber=3 :timeSpace=2 :duration=2 :isOrNotCircle="true" url="/src/js/index.json" :isOrNotButton=false>   <template scope="props">-----使用子組件傳過來的值,封裝slot    <div class="articleList-box-photo ">     <div class="tu imageEffectsAnimate imageEffects_Magnifier">      <a>       <img class="minMax" :src="props.item.img">      </a>     </div>    </div>    <div class="articleList-box-title">     <div class="title">      <a class="textleft">{{props.item.title}}</a>     </div>    </div>   </template>  </er-carousel-index> </div></template><script> import ErCarouselIndex from './components/carouselIndex/src/carouselIndex.vue' export default {  name: 'app',  data() {   }    },  components: {   ErCarouselIndex//一定要進行組件聲明,不然不能引用子組件  } }</script>

子組件:

<template> <div tag="div" class="articleList articleListMod-3 er-carouseindex" name="slide-fade" id="articleList" :style="{height:imgHeight+'px'}" >  <span id="btn1" class="er-carouseindex-left" @mousedown="imgMove('mouseLeft')" @mouseup="cancelMove('left')" v-show="isOrNotButton"></span>  <span id="btn2" class="er-carouseindex-right" @mousedown="imgMove('mouseRight')" @mouseup="cancelMove('right')" v-show="isOrNotButton"></span>  <div id="packageAll" class="er-carouseindex-con" @mouseover="clearAuto" @mouseout="slideAuto">   <div class="er-carouseindex-bar" v-show="isOrNotCircle">    <div v-for="(item,dex) in imgList" @mouseup="clearAuto" class="er-carouseindex-circle" @click="circleClick(dex)" :class="{circleSelected:dex===indexCircle}">    </div>   </div>   <div id="imageAll" class="er-carouseindex-item" :style="{transform:translateX,transition:transFlag?transitionTime:''}">    <div class="articleList-box er-carouseindex-box" v-for="(list,index) in imgLisShow" :style="{width:imgWidth+'%'}"      style="max-height:50%;">     <slot :item="list"></slot>    </div>   </div>  </div> </div></template><script> export default {  name: "ErCarouselIndex",  data(){   return {    imgList: [],//請求接口數據    imgLisShow: [],//圖片滾動數據,包括左中右三種    timer: null,//自動循環滾動時的間隔時間    timeout:null,//長按時的圖片滾動間隔時間    index:0,//圖片索引    translateXnum:0,//圖片滾動時的偏移量    translateX:"",//生成圖片偏移時的表達式    imgWidth:"",//圖片所占寬度    timeDown:"",//鼠標剛按下時的時間    timeup:"",//鼠標松開時的時間    clickSpace:"",//鼠標按下松開的時間間隙    transFlag:true,//是否勻速滾動,    transitionTime:"",    indexCircle:0//小圓圈滾動索引   }  },  props:{   duration:0,//圖片延時滾動   typeNumber:0, //每次滾動幾張   timeSpace:0, //圖片滾動時間間隔   url:String,//請求接口地址   pageNumber:0,//當前頁面顯示幾張圖片   isOrNotButton:true,//是否顯示左右按鈕   isOrNotCircle:true,//是否顯示小圓圈   imgHeight:""http://圖片滾動顯示高度  },  watch:{   index:{    handler(){     var _this=this;     if(Math.abs(this.index)==this.imgList.length){      this.indexCircle=0;      setTimeout(function(){       _this.reset();      },_this.duration*1000*0.98);     }else{      this.indexCircle=this.index;     }     this.calcXnum();     }   },   translateXnum:{    handler(){     this.translateX="translateX("+this.translateXnum+"%)";    }   }  },  methods:{   //頁面初始化復賦值   imgView:function() {    var _this = this;    _this.$http.get(_this.url).then(function (res) {     _this.imgList = res.data.imgList;     for(var i=0;i<3;i++){      _this.imgList.forEach(function (item, index) {       _this.imgLisShow.push(item);      });     }     _this.reset();     _this.slideAuto();     _this.imgWidth=(100/_this.pageNumber)-1;     _this.transitionTime="all "+_this.duration*0.98+"s linear";     console.log(_this.transitionTime);    });   },   //圖片滾動方法(長按)   imgMove:function(direct){    var _this = this;    _this.timeDown=new Date();//記錄按下的時間    _this.timeout = setInterval(function() {     if(direct=="mouseLeft") {      _this.leftMove();     }else{      _this.rightMove();     }    },300);   },   //鼠標送開時執行的方法   cancelMove:function(direct){    var _this = this;    _this.clearAuto();    this.timeup=new Date();//記錄松開的時間    this.clickSpace=this.timeup.getTime() - this.timeDown.getTime();    //時間間隔小于500毫秒為點擊,反之為長按    if(this.clickSpace<500){     for(var i=0;i<_this.typeNumber;i++){      if(direct=="left"){       _this.leftMove();      }else{       _this.rightMove();      }     }    }    if (this.timeout) {     clearInterval(this.timeout);     this.timeout = null;    }   },   //向左移動   leftMove:function(){    this.index--;    this.transFlag=true;   },   //向右移動   rightMove:function(){    this.transFlag=true;    this.index++;   },   slideAuto:function () {    var _this = this;    _this.timer = setTimeout(function () {     if(Math.abs(_this.index)!==_this.imgList.length){      _this.rightMove();      _this.slideAuto();     }    }, _this.timeSpace * 1000);   },   clearAuto:function () {    console.log("停止");    if (this.timer) {     clearInterval(this.timer);     this.timer = null;    }   },   //重置   reset:function(){    this.index=0;    this.transFlag=false;    this.calcXnum();   },   calcXnum:function(){    var _this=this;    this.translateXnum=-(this.index+this.imgList.length)*(100/this.pageNumber);   },   //點擊圓圈跳轉圖片   circleClick:function(dex){    this.index=dex;    this.clearAuto();   }  },  mounted()  {   this.$nextTick(function () {    this.imgView();   });  } }</script>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 湖北省| 香河县| 孟州市| 麻江县| 通渭县| 信宜市| 宁国市| 遵化市| 霍林郭勒市| 昌乐县| 交城县| 广安市| 德阳市| 离岛区| 理塘县| 平遥县| 贵阳市| 黑山县| 探索| 宝清县| 大冶市| 中宁县| 赫章县| 成都市| 泰来县| 仁怀市| 龙江县| 牙克石市| 军事| 麦盖提县| 南开区| 营山县| 商洛市| 遂宁市| 隆德县| 石台县| 天门市| 石阡县| 巴彦县| 德昌县| 河源市|