Vue.jsのvue-slickプラグインを使用し、画像のカルーセルスライダーを実装します。

vue-slick のインストール

以下のnpmコマンドでインストールできます。インストールが完了すると「node_modules」フォルダ内に「vue-slick」フォルダが作成されます。

 npm install vue-slick 

そもそものNode.jsとVue CLIの導入は以下をご参照下さい。

注意点として、jqueryの導入も必要になります。下記エラーが出る場合はjqueryのインストールもして下さい。

This dependency was not found:

* jquery in ./node_modules/vue-slick/dist/slickCarousel.esm.js

To install it, you can run: npm install --save jquery

jqueryのインストール は以下で可能です。

npm install jquery --save

vue-slickの設定

Vueファイルは以下になります。

<template>
  <div class="main">

    <p>slick デフォルト ↓</p>
    <slick ref="slick" class="slick-outer">
      <div><img src="static/img/tokyost.jpg" class="slick-img">{{tokyo}}</div>
      <div><img src="static/img/osaka.jpg" class="slick-img">{{osaka}}</div>
      <div><img src="static/img/aso.jpg" class="slick-img">{{aso}}</div>
    </slick>

   <p>slick オプション指定 ↓</p>
   <slick ref="slick" :options="slickOptions" class="slick-outer">
      <div><img src="static/img/tokyost.jpg" class="slick-img">{{tokyo}}</div>
      <div><img src="static/img/osaka.jpg" class="slick-img">{{osaka}}</div>
      <div><img src="static/img/aso.jpg" class="slick-img">{{aso}}</div>
   </slick>

  </div>
</template>

<script>
import Slick from 'vue-slick'
import '../../node_modules/slick-carousel/slick/slick.css'
export default {
  name: 'Main',
  data () {
    return {
      tokyo: '東京駅',
      osaka: '大阪城',
      aso: '阿蘇山',
      slickOptions:{
        arrows: false,
        autoplay: true,
        autoplaySpeed: 1000,
      }
    }
  },
  components: {
    Slick
  },
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

.slick-outer{
  width:80%;
  padding:10px;
  margin:auto;
    margin-bottom:10px;
    background-color:lightgray;
}
.slick-img{
  margin:auto;
  width:50%;
  height:250px;
}

@media(max-width:768px) {
.slick-img{
  margin:auto;
  width:50%;
  height:150px;
}
}

</style>

Slickタグで対象のタグを囲みます。

<slick ref="slick" class="slick-outer">
  <div><img src="static/img/tokyost.jpg" class="slick-img">{{tokyo}}</div>
  <div><img src="static/img/osaka.jpg" class="slick-img">{{osaka}}</div>
  <div><img src="static/img/aso.jpg" class="slick-img">{{aso}}</div>
</slick>
scriptでは、importでslickの読込みと、slickのcssの読込みを行います。
<script>
import Slick from 'vue-slick'
import '../../node_modules/slick-carousel/slick/slick.css'
export default {
  name: 'Main',
  data () {
    return {
      tokyo: '東京駅',
      osaka: '大阪城',
      aso: '阿蘇山',
      slickOptions:{
        arrows: false,
        autoplay: true,
        autoplaySpeed: 1000,
      }
    }
  },
  components: {
    Slick
  },
}
</script>

オプションの指定

オプションを指定する場合は、slickタグの中にoptionsを指定します。

<slick ref="slick" :options="slickOptions" class="slick-outer">

scriptのdata()のreturn内にslickOptionsを指定します。
今回は 以下の指定をしています。

arrows: falseで「prev」「next」のボタンを無くす。

autoplay: trueで自動にスライドをさせる。

autoplaySpeed: 1000で自動スライドのスピードを指定する。

その他のオプションは公式サイトを下さい。

  data () {
    return {
      tokyo: '東京駅',
      osaka: '大阪城',
      aso: '阿蘇山',
      slickOptions:{
        arrows: false,
        autoplay: true,
        autoplaySpeed: 1000,
      }
    }
  },

サンプル画面

サンプル画面はこちらです。