Vue.jsでカルーセルを実装するには、「vue-carousel」を使うと基本的なコーディングや設定をする必要がなく、非常に便利です。導入に当たってはこちらを参考にしてください。
またVue.jsでFontawesomeを使うには、「vue-fontawesome」を使うと便利です。導入はこの記事を参考にどうぞ。
こんな感じの記述で簡単にアイコンを表示することができます。
<font-awesome-icon :icon="['far','play-circle']"/>
ここでやってみたいことが生まれます:
カルーセルの両サイドの矢印を、Fontawesomeの矢印に置き換えたい。
でもこれを実現しようとするとなかなか難しいんですよね。
第1段階:カルーセルのアイコンをbindする
こう書くことで、カルーセルのアイコンを変更することが出来るようになります。<carousel
:navigation-next-label="navigationNext"
:navigation-prev-label="navigationPrev"
>
</carousel>
<script>
import Carousel from 'vue-carousel/src/Carousel.vue'
import Slide from 'vue-carousel/src/Slide.vue'
export default {
components: {
Carousel,
Slide
},
computed: {
navigationNext: function() {
return '→'
},
navigationPrev: function() {
return '←'
}
}
}
</script>
この矢印をアイコンに置き換えてやれば良いです。
第2段階:computedでFontawesomeを返す
テンプレート内ではこんな風に書いていますから、これを入れてみますが、もちろん動きません。<font-awesome-icon :icon="['far','play-circle']"/>
どうしたもんかと悩みましたが、結局やったことは、vue-fontawesomeによる置き換えは諦めて、この形で表示させることでした。
<i class="far fa-play-circle">
事前に nuxt.config.js で、fontawesome のCSSを読み込んでおきます。
head: {
link: [
{ rel: "stylesheet", href:"https://use.fontawesome.com/releases/v5.12.0/css/all.css"}
],
}
その上で、computed をこう変えるとカルーセルのアイコンがFontawesomeのアイコンに置き換わります。
computed: {
navigationNext: function() {
return '<i class="far fa-play-circle">'
},
navigationPrev: function() {
return '<i class="far fa-play-circle fa-rotate-180">'
}
}
fa-rotate-180
というのは180度回転させるという意味です。ご参考までに!