vue慕课网音乐项目手记:5-手写滚动轮播图(上)

以下内容整理自《慕课网vue音乐app》

在这一节,会封装一些公用的函数来添加classname,改变image的宽度。

具体如下:

首先:封装一个slider的组件

vue慕课网音乐项目手记:5-手写滚动轮播图(上)_第1张图片

样式如下:

vue慕课网音乐项目手记:5-手写滚动轮播图(上)_第2张图片

.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%

紧接着就是js部分的代码了。

vue慕课网音乐项目手记:5-手写滚动轮播图(上)_第3张图片

vue慕课网音乐项目手记:5-手写滚动轮播图(上)_第4张图片

export default {
  name: 'Slider',
  props: {
    loop: {
      type: Boolean,
      default: true
    },
    autoPlay: {
      type: Boolean,
      default: true
    },
    interval: {
      type: Number,
      default: 4000
    }
  },
  mounted () {
    setTimeout(() => {
      this._setSliderWidth()
      this._initSlider()
    }, 20)
  },
  methods: {
    _setSliderWidth () {
      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) {
        width += 2 * sliderWidth
      }
      this.$refs.sliderGroup.style.width = width + 'px'
    },
    _initSlider () {

    }
  }
}

vue慕课网音乐项目手记:5-手写滚动轮播图(上)_第5张图片


export function addClass (el, className) {
  if (hasClass(el, className)) {
    return
  }
  let newClass = el.className.split(' ')
  newClass.push(className)
  el.className = newClass.join(' ')
}
export function hasClass (el, className) {
  let reg = new RegExp('(^|\\s)' + className + '(\\s|$)')
  return reg.test(el.className)
}

遇到的问题:上面这样写完后。slide-item的class名字不能添加上,什么原因。

在这里的问题我反复看了一下,具体的意思如下。

vue慕课网音乐项目手记:5-手写滚动轮播图(上)_第6张图片

vue慕课网音乐项目手记:5-手写滚动轮播图(上)_第7张图片

vue慕课网音乐项目手记:5-手写滚动轮播图(上)_第8张图片

这样,就解决了。

然后呢,通过betterscroll来让图片轮播:

vue慕课网音乐项目手记:5-手写滚动轮播图(上)_第9张图片

到此完成轮播图第一部分。

你可能感兴趣的:(vue音乐)