亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue-music 使用better-scroll遇到輪播圖不能自動輪播問題

2019-11-19 12:25:16
字體:
來源:轉載
供稿:網友

根據vue-music視頻中slider組建的使用,當安裝新版本的better-scroll,輪播組件,不能正常輪播

這是因為,better-scroll發布新版本之后,參數設置發生改變

這是舊版本: 組件為slider

<template> <div class="slider" ref="slider">  <div class="slider-group" ref="sliderGroup">   <slot>   </slot>  </div>  <div class="dots">   <span class="dot" :class="{active: currentPageIndex === index }" v-for="(item, index) in dots" :key="item.id"></span>  </div> </div></template><script type="text/ecmascript-6">import { addClass } from "common/js/dom";import BScroll from "better-scroll";export default { name: "slider", props: {  loop: {   type: Boolean,   default: true  },  autoPlay: {   type: Boolean,   default: true  },  interval: {   type: Number,   default: 4000  } }, data() {  return {   dots: [],   currentPageIndex: 0  }; }, mounted() {  setTimeout(() => {   this._setSliderWidth();   this._initDots();   this._initSlider();   if (this.autoPlay) {    this._play();   }  }, 20);  window.addEventListener("resize", () => {   if (!this.slider) {    return;   }   this._setSliderWidth(true);   this.slider.refresh();  }); }, activated() {  if (this.autoPlay) {   this._play();  } }, deactivated() {  clearTimeout(this.timer); }, beforeDestroy() {  clearTimeout(this.timer); }, methods: {  _setSliderWidth(isResize) {   this.children = this.$refs.sliderGroup.children;   let width = 0;   let sliderWidth = this.$refs.slider.clientWidth;   for (let i = 0; i < this.children.length; i++) {    let child = this.children[i];    addClass(child, "slider-item");    child.style.width = sliderWidth + "px";    width += sliderWidth;   }   if (this.loop && !isResize) {    width += 2 * sliderWidth;   }   this.$refs.sliderGroup.style.width = width + "px";  },  _initSlider() {   // better-scroll 對外暴露了一個 BScroll 的類   // Vue.js 提供了我們一個獲取 DOM 對象的接口―― vm.$refs   this.slider = new BScroll(this.$refs.slider, {    scrollX: true,    scrollY: false,    momentum: false,    snap: true,    snapLoop: this.loop,    snapThreshold: 0.3,    snapSpeed: 400   });   // 是否派發滾動到底部事件,用于上拉加載  // 切換到下一張的時候派發的事件   this.slider.on("scrollEnd", () => {    let pageIndex = this.slider.getCurrentPage().pageX;    if (this.loop) {     pageIndex -= 1;    }    this.currentPageIndex = pageIndex;    if (this.autoPlay) {     this._play();    }   });   // 是否派發列表滾動開始的事件   this.slider.on("beforeScrollStart", () => {    if (this.autoPlay) {     clearTimeout(this.timer);    }   });  },  _initDots() {   this.dots = new Array(this.children.length);  },  _play() {   let pageIndex = this.currentPageIndex + 1;   if (this.loop) {    pageIndex += 1;   }   this.timer = setTimeout(() => {    this.slider.goToPage(pageIndex, 0, 400);   }, this.interval);  } }};</script><style scoped lang="stylus" rel="stylesheet/stylus">@import '~common/stylus/variable';.slider { min-height: 1px; .slider-group {  position: relative;  overflow: hidden;  white-space: nowrap;  .slider-item {   float: left;   box-sizing: border-box;   overflow: hidden;   text-align: center;   a {    display: block;    width: 100%;    overflow: hidden;    text-decoration: none;   }   img {    display: block;    width: 100%;   }  } } .dots {  position: absolute;  right: 0;  left: 0;  bottom: 12px;  text-align: center;  font-size: 0;  .dot {   display: inline-block;   margin: 0 4px;   width: 8px;   height: 8px;   border-radius: 50%;   background: $color-text-l;   &.active {    width: 20px;    border-radius: 5px;    background: $color-text-ll;   }  } }}</style>

 下面是版本升級之后,做出的變化

<template>  <div class="slide" ref="slide">    <div class="slide-group" ref="slideGroup">      <slot>      </slot>    </div>    <div v-if="showDot" class="dots">      <span class="dot" :class="{active: currentPageIndex === index }" v-for="(item, index) in dots" :key="index"></span>    </div>  </div></template><script type="text/ecmascript-6">import { addClass } from "common/js/dom";import BScroll from "better-scroll";// const COMPONENT_NAME = "slide";export default {//  name: COMPONENT_NAME, props: {  loop: {   type: Boolean,   default: true  },  autoPlay: {   type: Boolean,   default: true  },  interval: {   type: Number,   default: 4000  },  showDot: {   type: Boolean,   default: true  },  click: {   type: Boolean,   default: true  },  threshold: {   type: Number,   default: 0.3  },  speed: {   type: Number,   default: 400  } }, data() {  return {   dots: [],   currentPageIndex: 0  }; }, mounted() {  this.update();  window.addEventListener("resize", () => {   if (!this.slide || !this.slide.enabled) {    return;   }   clearTimeout(this.resizeTimer);   this.resizeTimer = setTimeout(() => {    if (this.slide.isInTransition) {     this._onScrollEnd();    } else {     if (this.autoPlay) {      this._play();     }    }    this.refresh();   }, 60);  }); }, activated() {  if (!this.slide) {   return;  }  this.slide.enable();  let pageIndex = this.slide.getCurrentPage().pageX;  this.slide.goToPage(pageIndex, 0, 0);  this.currentPageIndex = pageIndex;  if (this.autoPlay) {   this._play();  } }, deactivated() {  this.slide.disable();  clearTimeout(this.timer); }, beforeDestroy() {  this.slide.disable();  clearTimeout(this.timer); }, methods: {  update() {   if (this.slide) {    this.slide.destroy();   }   this.$nextTick(() => {    this.init();   });  },  refresh() {   this._setSlideWidth(true);   this.slide.refresh();  },  prev() {   this.slide.prev();  },  next() {   this.slide.next();  },  init() {   clearTimeout(this.timer);   this.currentPageIndex = 0;   this._setSlideWidth();   if (this.showDot) {    this._initDots();   }   this._initSlide();   if (this.autoPlay) {    this._play();   }  },  _setSlideWidth(isResize) {   this.children = this.$refs.slideGroup.children;   let width = 0;   let slideWidth = this.$refs.slide.clientWidth;   for (let i = 0; i < this.children.length; i++) {    let child = this.children[i];    addClass(child, "slide-item");    child.style.width = slideWidth + "px";    width += slideWidth;   }   if (this.loop && !isResize) {    width += 2 * slideWidth;   }   this.$refs.slideGroup.style.width = width + "px";  },  _initSlide() {   console.log(this.threshold);   this.slide = new BScroll(this.$refs.slide, {    scrollX: true,    scrollY: false,    momentum: false,    snap: {     loop: this.loop,     threshold: this.threshold,     speed: this.speed    },    bounce: false,    stopPropagation: true,    click: this.click   });     this.slide.on("scrollEnd", this._onScrollEnd);   this.slide.on("touchEnd", () => {    if (this.autoPlay) {     this._play();    }   });   this.slide.on("beforeScrollStart", () => {    if (this.autoPlay) {     clearTimeout(this.timer);    }   });  },  _onScrollEnd() {   let pageIndex = this.slide.getCurrentPage().pageX;   this.currentPageIndex = pageIndex;   if (this.autoPlay) {    this._play();   }  },  _initDots() {   this.dots = new Array(this.children.length);  },  _play() {   clearTimeout(this.timer);   this.timer = setTimeout(() => {    this.slide.next();   }, this.interval);  } }, watch: {  loop() {   this.update();  },  autoPlay() {   this.update();  },  speed() {   this.update();  },  threshold() {   this.update();  } }};</script><style lang="stylus" rel="stylesheet/stylus">@import '../../common/stylus/variable';.slide {  min-height: 1px;  .slide-group {    position: relative;    overflow: hidden;    white-space: nowrap;    .slide-item {      float: left;      box-sizing: border-box;      overflow: hidden;      text-align: center;      a {        display: block;        width: 100%;        overflow: hidden;        text-decoration: none;      }      img {        display: block;        width: 100%;      }    }  }  .dots {    position: absolute;    right: 0;    left: 0;    bottom: 12px;    transform: translateZ(1px);    text-align: center;    font-size: 0;    .dot {      display: inline-block;      margin: 0 4px;      width: 8px;      height: 8px;      border-radius: 50%;      background: $color-text-l;      &.active {        width: 20px;        border-radius: 5px;        background: $color-text-ll;      }    }  }}</style>

可參考官方文檔:https://github.com/ustbhuangyi/better-scroll/blob/master/example/components/slide/slide.vue

總結

以上所述是小編給大家介紹的vue-music 使用better-scroll遇到輪播圖不能自動輪播問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩国产精品亚洲а∨天堂免| 午夜精品久久久久久久白皮肤| 久久久久日韩精品久久久男男| 亚洲女人天堂网| 国产日韩专区在线| 亚洲韩国欧洲国产日产av| 亚洲在线免费观看| 日韩中文字幕免费| 亚洲欧美一区二区精品久久久| 久久夜色精品国产欧美乱| 亚洲黄色www网站| 亚洲精品国产综合久久| 国产精品成人免费电影| 91成人福利在线| 欧美激情一二三| 丰满岳妇乱一区二区三区| 亚州国产精品久久久| 亚洲欧美在线一区| 亚洲黄色www网站| 国产日韩欧美影视| 人人爽久久涩噜噜噜网站| 最新中文字幕亚洲| 久久九九有精品国产23| 成人写真福利网| 亚洲综合av影视| 亚洲国产精品推荐| 精品亚洲男同gayvideo网站| 久久久91精品| 欧美一级大片在线免费观看| 日本一欧美一欧美一亚洲视频| 日韩成人黄色av| 国产日韩专区在线| 亚洲二区在线播放视频| 国产91精品最新在线播放| 国产97色在线| 久久人人爽亚洲精品天堂| 久久久久久久av| 欧美国产激情18| 亚洲欧美中文另类| 欧美人在线视频| 久久精品国产亚洲精品2020| 国产精品国产自产拍高清av水多| 影音先锋欧美在线资源| 日韩欧美国产视频| 久久中文字幕在线视频| 精品成人69xx.xyz| 国产精品视频1区| 国语自产精品视频在免费| 久久人人爽人人| 久久亚洲电影天堂| 国产成人精品日本亚洲| 亚洲国产欧美一区| 亚洲图片欧美日产| 亚洲国产日韩欧美在线99| 欧美成人精品一区二区三区| 欧美激情第6页| 国产日韩中文在线| 在线视频亚洲欧美| 91在线视频精品| 九九九热精品免费视频观看网站| 亚洲色图欧美制服丝袜另类第一页| 精品网站999www| 视频一区视频二区国产精品| 亚洲精选一区二区| 成人福利视频在线观看| 成人免费xxxxx在线观看| 欧美日韩第一页| 成人激情视频免费在线| 亚洲人成电影在线播放| 久国内精品在线| 国产精品视频免费在线| 欧美成人sm免费视频| 日本精品久久中文字幕佐佐木| 日韩中文字幕网| 国产一区二区三区精品久久久| 久久在线免费视频| 亚洲午夜性刺激影院| 在线成人激情视频| 亚洲第一福利在线观看| 91在线免费视频| 亚洲在线观看视频网站| 亚洲va欧美va国产综合剧情| 91精品久久久久久| 国产福利精品在线| 国产精品欧美久久久| 日韩欧美a级成人黄色| 久久综合国产精品台湾中文娱乐网| 成人免费xxxxx在线观看| 亚洲国产精品成人一区二区| 大胆人体色综合| 亚洲精品视频免费| 69久久夜色精品国产7777| 国产日韩欧美成人| 亚洲人成网站在线播| 国产精品入口免费视| 国产精品99久久久久久白浆小说| 欧美电影免费在线观看| 亚洲精品国产福利| 亚洲性猛交xxxxwww| 国产精品一区二区三区久久久| 亚洲亚裔videos黑人hd| 亚洲欧美日韩高清| 精品福利免费观看| 亚洲a级在线播放观看| 亚洲欧美国产日韩中文字幕| 国产精品视频精品| 亚洲精品日韩久久久| 日韩高清免费在线| 精品国产乱码久久久久久婷婷| 亚洲第一色在线| 日韩av中文字幕在线| 国产精品视频26uuu| 日本高清不卡在线| 久久久久亚洲精品国产| 国产日本欧美一区二区三区| 国产精品美女主播在线观看纯欲| 久久香蕉国产线看观看av| 精品久久久久久久久久国产| 欧美乱大交做爰xxxⅹ性3| 7777免费精品视频| 米奇精品一区二区三区在线观看| 91成人天堂久久成人| 最好看的2019年中文视频| 亚洲视频999| 懂色av中文一区二区三区天美| 欧美大全免费观看电视剧大泉洋| 日韩精品在线免费| 国产这里只有精品| 国产经典一区二区| 日本最新高清不卡中文字幕| 北条麻妃一区二区三区中文字幕| 亚洲黄在线观看| 九九热这里只有在线精品视| 久久久精品视频成人| 亚洲国产三级网| 97热在线精品视频在线观看| 一区二区三区国产视频| 国产美女精彩久久| 黄色精品一区二区| 国产精品海角社区在线观看| 国模私拍视频一区| 欧美老妇交乱视频| 欧美性猛交xxxxx免费看| 91精品视频播放| 日韩精品欧美国产精品忘忧草| 国自产精品手机在线观看视频| 色在人av网站天堂精品| 午夜免费久久久久| 中文字幕日韩综合av| 亚洲视频电影图片偷拍一区| 欧美日韩免费在线| 日韩免费av在线| 国产精品啪视频| 亚洲人成网站免费播放| 成人精品一区二区三区电影免费| 狠狠躁夜夜躁人人躁婷婷91| 成人黄色av网站| 97高清免费视频| 国产伦精品一区二区三区精品视频| 日韩激情在线视频| 亚洲网站在线观看| www.亚洲成人| 日韩av影视在线| 久久人人爽亚洲精品天堂|