Home

Awesome

vue-easy-slider

Travis branch prettier NPM package NPM downloads GitHub license

Keep slider simple!

Demo

demo

Install

npm i -S vue-easy-slider

Usage

Plugin install:

import Vue from 'vue'
import EasySlider from 'vue-easy-slider'

Vue.use(EasySlider)

Or work on a Vue instance:

<slider animation="fade">
  <slider-item
    v-for="(i, index) in list"
    :key="index"
    :style="i"
    @click="hello"
  >
    <p style="line-height: 280px; font-size: 5rem; text-align: center;">Page{{ index + 1 }}</p>
  </slider-item>
</slider>
import { Slider, SliderItem } from 'vue-easy-slider'

new Vue({
  el: 'body',
  components: {
    Slider,
    SliderItem,
  },
  data() {
    return {
      list: [
        { backgroundColor: '#3f51b5', width: '100%', height: '100%' },
        { backgroundColor: '#eee', width: '100%', height: '100%' },
        { backgroundColor: '#f44336', width: '100%', height: '100%' },
      ],
    }
  },
  methods: {
    hello($event) {
      console.log(`hello index: ${$event}`)
    },
  },
})

Control slider with v-model

<slider animation="fade" v-model="sliderIndex">
  ...
</slider>
<button @click="moveToIndex(2)">move to page 3</button>
...
  data() {
    return {
      // initial index
      sliderIndex: 1,
      list: [
        { backgroundColor: '#3f51b5', width: '100%', height: '100%' },
        { backgroundColor: '#eee', width: '100%', height: '100%' },
        { backgroundColor: '#f44336', width: '100%', height: '100%' },
      ],
    }
  },
  methods: {
    moveToIndex(index) {
      this.sliderIndex = index
    },
  },
...

Props

Slider:

nametypedefaultdescription
widthStringautoSlider width
heightString300pxSlider height
touchBooleantrueEnable touch slide
animation'normal', 'fade''normal'Change animation
autoplayBooleantrueAutoplay
stopOnHoverBooleanfalseStop autoplay when hover
intervalNumber3000Delay of autoplay ( autoplay option should be true )
speedNumber500Speed(ms) of animation
indicators'center', 'left', 'right', false'center'Show indicators on option position or hide indicators
control-btnBooleantrueShow control button
before-nextFunction() => trueBefore next guard, sliding to next item when this function return true
before-previousFunction() => trueBefore previous guard

Events

Slider:

namedescription$event
changeFires when the slide changenumber // index of slides
nextFires when the button for the next slide was pressed{ original: number, next: number }
previousFires when the button for the previous slide was pressed{ original: number, next: number }

Slots

SliderItem:

namedescription
defaultItem content
loadingLoading placeholder

usage:

<slider>
  <slider-item>
    <img src="">
    <p></p>
    <button></button>
  </slider-item>
  <div slot="loading">custom loading ...</div>
</slider>

License

MIT