vue使用swiper插件實現輪播圖的示例
hello大傢好,最近我在做一個仿餓瞭麼的項目,我會將我的項目經驗同步到這裡,與大傢分享!
vue – 使用swiper插件實現輪播圖
下載安裝: npm install swiper --save
Msite.vue的HTML部分:
<!--在頁面msite_nav導航部分使用swiper--> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide">1</div> <div class="swiper-slide">2</div> <div class="swiper-slide">3</div> </div> <!-- swiper輪播圖圓點 --> <div class="swiper-pagination"></div> </div>
script部分引入並初始化:
<script> import Swiper from 'swiper' //同時引入swiper的 css文件 import 'swiper/dist/css/swiper.min.css' export default { //註意要在頁面加載完成之後(mounted)再進行swiper的初始化 mounted () { //創建一個swiper實例來實現輪播 new Swiper('.swiper-container', { autoplay: true, // 如果需要分頁器 pagination: { el: '.swiper-pagination', clickable: true } }) } } </script>
需要註意的是:在引入css文件的時候,因為版本不同,引入的方式也不同,否則會因找不到相對應的css文件而報錯,比如最新的版本
import 'swiper/swiper-bundle.min.css'
具體用法參考[Swiper官方文檔]
有一個需要特別註意的是,需要在請求數據之後創建swiper實例
使用watch與$nextTick解決輪播的Bug
分頁器Swiper其實應該是在輪播列表顯示(即categorys數組有瞭數據)以後才初始化。
最開始categorys為空數組,有瞭數據才會顯示輪播列表,而要監視categorys的數據變化,就要用到watch。
// 新建watch 監聽categorys watch: { categorys (value) { // categorys數組中有數據瞭 // 但界面還沒有異步更新 } } // 刪除mounted中的new Swiper...代碼
但其實state裡的狀態數據改變(categorys接收數據)與異步更新界面(顯示輪播列表)是兩個步驟。所以需要等一等,界面完成異步更新後才可以進行Swiper的初始化。
// 使用setTimeout可以實現效果, 但是時機不準確 setTimeout(() => { // 創建一個Swiper實例對象, 來實現輪播 new Swiper('.swiper-container', { autoplay: true, // 如果需要分頁器 pagination: { el: '.swiper-pagination', clickable: true } }) }, 100)
利用vm.$nextTick( [callback] )來實現等待界面完成異步更新就立即創建Swiper對象
// 在修改數據之後立即使用它,然後等待 DOM 更新。 this.$nextTick(() => { // 一旦完成界面更新, 立即執行回調 new Swiper('.swiper-container', { autoplay: true, pagination: { el: '.swiper-pagination', clickable: true } })
以上就是vue使用swiper插件實現輪播圖的示例的詳細內容,更多關於vue使用swiper插件實現輪播圖的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- 關於vue2使用swiper4的踩坑記錄
- 解決vue中使用swiper 插件出錯的問題
- Swiper.js插件超簡單實現輪播圖
- vue實現輪播圖片
- 如何在VUE中使用vue-awesome-swiper