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

首頁 > 開發 > JS > 正文

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

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

根據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遇到輪播圖不能自動輪播問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线观看精品一区二区三区| 疯狂做受xxxx高潮欧美日本| 日本欧美在线视频| 国产精品高潮呻吟久久av无限| 亚洲第一中文字幕| yw.139尤物在线精品视频| 成人精品视频在线| 日韩中文字幕免费视频| 久久99国产精品自在自在app| 亚洲电影中文字幕| 欧美超级免费视 在线| 一区二区三区四区精品| 国产精品视频自拍| 亚洲精品国产品国语在线| 国产日韩精品电影| 亚洲午夜久久久影院| 国产三级精品网站| 日韩经典一区二区三区| 欧美激情极品视频| 成人a在线视频| 亚洲高清不卡av| 日韩精品久久久久久久玫瑰园| 91理论片午午论夜理片久久| 4438全国亚洲精品在线观看视频| 欧美福利小视频| 日本午夜在线亚洲.国产| 日本亚洲欧美三级| 少妇高潮久久久久久潘金莲| 亚洲国产精品va在线| 国产一区二区三区中文| 久久亚洲精品国产亚洲老地址| 欧美限制级电影在线观看| 亚洲一区二区三区四区在线播放| 久久亚洲影音av资源网| 亚洲www永久成人夜色| 欧美性生活大片免费观看网址| 亚洲999一在线观看www| 亚洲免费一在线| 国产精品av电影| 97免费中文视频在线观看| 中文字幕免费精品一区高清| 日韩欧美国产网站| 伊人久久男人天堂| 97视频人免费观看| 57pao国产成人免费| 456国产精品| 亚洲aⅴ日韩av电影在线观看| 国产精品三级美女白浆呻吟| 91日本视频在线| 全色精品综合影院| 夜夜嗨av一区二区三区免费区| 91sa在线看| 国产精品久久久久久av下载红粉| 欧美大肥婆大肥bbbbb| 青青在线视频一区二区三区| 久久久国产在线视频| 国产精品免费久久久| 亚洲欧美另类自拍| 九九九久久久久久| 久久天天躁狠狠躁夜夜躁2014| 高清一区二区三区四区五区| 欧美大片网站在线观看| 欧美一级黑人aaaaaaa做受| 欧美精品www在线观看| 欧美成人亚洲成人日韩成人| 日韩精品在线观看一区二区| 久久天天躁狠狠躁老女人| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产日韩欧美91| 成人字幕网zmw| 精品在线观看国产| 亚洲成色www8888| 国产精品美乳在线观看| 操日韩av在线电影| 日韩免费在线播放| 91精品视频在线免费观看| 亚洲国产成人精品电影| 日韩美女福利视频| 亲爱的老师9免费观看全集电视剧| 91久久国产婷婷一区二区| 5566日本婷婷色中文字幕97| 欧美性极品少妇精品网站| 成人国产精品色哟哟| 欧美日韩国产一区在线| 毛片精品免费在线观看| 国产精品看片资源| 久久久久久久久久久网站| 97视频在线观看视频免费视频| 日韩在线观看精品| 性色av一区二区三区| 欧美日韩不卡合集视频| 国产精品18久久久久久首页狼| 中文亚洲视频在线| 亚洲成人激情小说| 亚洲欧美三级伦理| 色播久久人人爽人人爽人人片视av| 国产欧美日韩91| 久久精品国产96久久久香蕉| 亚洲国产欧美精品| 日韩成人xxxx| 亚洲国产精品大全| 中文字幕av一区| 国产精品直播网红| 欧美另类极品videosbest最新版本| 91老司机精品视频| 亚洲精品福利资源站| 中文一区二区视频| 国产精品www| 久久影视三级福利片| 国产成人a亚洲精品| 欧美性猛交xxx| 久久久久99精品久久久久| 这里只有精品视频| 欧美电影电视剧在线观看| 91国产精品电影| 亚洲性无码av在线| 日韩av片永久免费网站| 国产成人精品在线视频| 日韩不卡在线观看| 日韩在线高清视频| 中文字幕在线成人| 91久久精品国产91久久| 亚洲精品小视频| 欧美综合一区第一页| 日韩第一页在线| 亚洲欧美中文字幕| 久久中国妇女中文字幕| 日韩精品视频三区| 97涩涩爰在线观看亚洲| 97国产精品视频人人做人人爱| 亚洲美腿欧美激情另类| 91天堂在线视频| 日韩大陆欧美高清视频区| 久久亚洲电影天堂| 国产精品自产拍在线观看中文| 亚洲欧美中文在线视频| 日韩欧美视频一区二区三区| 日韩精品在线观看视频| 中文字幕一精品亚洲无线一区| 91av中文字幕| 久久久久久成人精品| 97精品国产91久久久久久| 丁香五六月婷婷久久激情| 色婷婷综合久久久久| 亚洲人成网站999久久久综合| 91丨九色丨国产在线| 少妇高潮久久久久久潘金莲| 国内久久久精品| 国内精品久久久久| 国产99视频精品免视看7| 欧美猛男性生活免费| 4388成人网| 亚洲欧洲免费视频| 亚洲第一级黄色片| 国产精品久久久久7777婷婷| 欧美乱人伦中文字幕在线| 夜夜嗨av一区二区三区四区| 91极品视频在线| 欧美激情精品久久久久久黑人| 亚洲电影中文字幕| 日韩一区二区福利| 久久频这里精品99香蕉| 亚洲日本aⅴ片在线观看香蕉| 成人网欧美在线视频|