👉
Nuxt 3でSwiper Elementを試した
プロジェクトフォルダを作成する
適当に「nuxt3-swiper-element」をつくって試す。
/nuxt3-swiper-element
npx nuxi@latest init .
質問に答える。
# 今回はnpmを使う
✔ Which package manager would you like to use?
npm
# はじめての場合はでるかも?
✔ Are you interested in participating?
No
# Gitリポジトリの初期化は今回どうでもいい
✔ Initialize git repository?
No
Swiperを導入する
swiperをインストールする。
/nuxt3-swiper-element
npm i swiper
以下の記事を参考にnuxt.config.tsでカスタム要素を指定しておく。
使ってみる
/nuxt3-swiper-element/app.vue
<script setup lang="ts">
// カスタム要素を読み込む
import { register } from 'swiper/element/bundle';
register();
</script>
<template>
<!--
オプションはswiper-containerに渡す。
ナビゲーションやブレイクポイントなどは、
JSON.stringify()にオブジェクトを渡したらうまくいった。
-->
<swiper-container
loop="false"
speed="600"
slides-per-view="1.5"
space-between="20"
:navigation="JSON.stringify({
nextEl: '#sampleSwiperNext',
prevEl: '#sampleSwiperPrev'
})"
:breakpoints="JSON.stringify({
641: {
slidesPerView: 2.5
}
})"
id="sampleSwiper"
>
<swiper-slide>
<img src="~/assets/img/1.jpg" alt="" />
</swiper-slide>
<swiper-slide>
<img src="~/assets/img/2.jpg" alt="" />
</swiper-slide>
<swiper-slide>
<img src="~/assets/img/3.jpg" alt="" />
</swiper-slide>
<swiper-slide>
<img src="~/assets/img/4.jpg" alt="" />
</swiper-slide>
</swiper-container>
<!-- 今回は適当にスライドボタンを自前で用意 -->
<div :class="$style.buttons">
<button type="button" id="sampleSwiperPrev">
Prev
</button>
<button type="button" id="sampleSwiperNext">
Next
</button>
</div>
</template>
<style module>
img {
width: 100%;
}
.buttons {
display: flex;
justify-content: center;
gap: 20px;
}
</style>
実行する。
/nuxt3-swiper-element
npm run dev
確認できた。
おまけ
よくある「左右に余白つけたい」は、Shadow DOMにスタイルを指定したらできた。
/nuxt3-swiper-element/app.vue
...
<style scoped>
#sampleSwiper::part(container) {
width: calc(100% - 100px * 2);
padding: 0 100px;
}
</style>
Discussion