はじめに
- 普段、BEとWebのFEを体感8:2くらいの割合でやっているので、ガッツリFEをやると、そのたび浦島太郎状態になので、そこでの発見を小出しに書いてみようと思います
Vue3でvue-slickがサポートされていなかった
- Vue3は2020年9月リリースということで特段新しいというわけでもないのですが、新しいものを作るならばと使ってみることにしました。
- で、Webサービスでよく見かけるカルーセルを例によって作ることになり「まぁ、vue-slick使えばできるからいいだろう」とたかを括っていたのですが、Vue3はサポート対象外。。。
- そこで代案として探していた中で扱いやすそうだった
vue3-carousel
を触ってみることにしました。(vue3
と関するだけあってちゃんとVue3で使えます)
cf. https://www.npmjs.com/package/vue-slick
vue3-carousel使ってみる
- リファレンスのままですが、下記コードのみでカルーセルを表現できます。コードが短い!
$ npm install vue3-carousel
or
yarn add vue3-carousel
<template>
<carousel :items-to-show="1.5">
<slide v-for="slide in 10" :key="slide">
{{ slide }}
</slide>
<template #addons>
<navigation />
<pagination />
</template>
</carousel>
</template>
<script>
// If you are using PurgeCSS, make sure to whitelist the carousel CSS classes
import 'vue3-carousel/dist/carousel.css';
import { Carousel, Slide, Pagination, Navigation } from 'vue3-carousel';
export default {
name: 'App',
components: {
Carousel,
Slide,
Pagination,
Navigation,
},
};
</script>
<style lang="scss" scoped>
// とりあえず見れるように
.carousel__slide {
height: 200px;
background-color: red;
&:nth-child(2n) {
background-color: green;
}
}
</style>
カスタマイズ
- 1画面内にいくつスライドを表示するかであったり、自動設定があったり、画面サイズごとに設定を変えられたりといった見た目の変更も可能です。
- ※ 詳細は以下を参照ください
cf. https://ismail9k.github.io/vue3-carousel/getting-started.html#available-props
<script>
// If you are using PurgeCSS, make sure to whitelist the carousel CSS classes
import 'vue3-carousel/dist/carousel.css';
import { Carousel, Slide, Pagination, Navigation } from 'vue3-carousel';
export default {
name: 'App',
components: {
Carousel,
Slide,
Pagination,
Navigation,
},
// 以下追加
data() {
return {
breakpoints: {
500: {
itemsToShow: 1.5,
},
780: {
itemsToShow: 6,
}
}
}
}
};
</script>
- 500px以上ならスライド1.5枚表示
- 780px以上ならスライド6枚表示
参考
- reference: https://ismail9k.github.io/vue3-carousel/
- npm: https://www.npmjs.com/package/vue3-carousel
おわりに
- 昨年末から投稿が滞っておりましたが、そろそろ今年の年末(アドベントカレンダー)を見据えて記事を書いていこうと思います