为了账号安全,请及时绑定邮箱和手机立即绑定

关于better-scroll插件的问题

关于better-scroll插件的问题

慕慕3694468 2017-11-10 09:08:30
<template>  <div ref="slider">    <div ref="sliderGroup">      <slot>      </slot>    </div>    <div>      <span v-for="(item,index) in dots" :class="{active:currentPageIndex === index}"></span>    </div>  </div></template><script type="text/ecmascript-6">import BScroll from 'better-scroll'import {addClass} from 'common/js/dom'  export default {    data() {      return {        dots: [],        currentPageIndex: 0      }    },    props: {      loop: {        type: Boolean,        default: true      },      autoPlay: {        type: Boolean,        default: true      },      interval: {        type: Number,        default: 4000      }    },    mounted: function() {      setTimeout(() => {        this._getSliderWidth()        this._initDots()        this._initSlider()      },20)    },    methods: {      _getSliderWidth() {        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        }        // better-scroll在初始化的过程中如果this.loop为true的话,会左右各克隆一个DOM,所以需要加两个sliderWidth        if(this.loop){          width += 2*sliderWidth        }        this.$refs.sliderGroup.style.width = width + 'px'      },      _initDots(){        this.dots = new Array(this.children.length)      },      _initSlider() {        this.slider = new BScroll(this.$refs.slider, {          scrollX: true,          scrollY: false,          momentum: false,          snap: true,              snapLoop: this.loop,    snapThreshold: 0.3,     snapSpeed: 400,          click: true        })        this.slider.on('scrollEnd',()=>{          let pageIndex = this.slider.getCurrentPage().pageX          if(this.loop){            pageIndex -= 1          }          this.currentPageIndex = pageIndex        })      }    }  }</script><style scoped 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>有背景标注的地方在页面中不起作用,不知道什么原因,求教
查看完整描述

1 回答

?
慕慕3694468

TA贡献1条经验 获得超1个赞

解决了,就是在使用snap的时候,不可以单独引用snapLoop: this.loop,  snapThreshold: 0.3,  snapSpeed: 400,而应该将它们作为一个对象放在snap中


查看完整回答
1 反对 回复 2017-11-11
  • 1 回答
  • 0 关注
  • 2225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信