vue使用swiper插件實現(xiàn)輪播圖的示例
hello大家好,最近我在做一個仿餓了么的項目,我會將我的項目經(jīng)驗同步到這里,與大家分享!
vue - 使用swiper插件實現(xiàn)輪播圖下載安裝: 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 () { //創(chuàng)建一個swiper實例來實現(xiàn)輪播 new Swiper(’.swiper-container’, { autoplay: true, // 如果需要分頁器 pagination: {el: ’.swiper-pagination’,clickable: true } }) }}</script>
需要注意的是:在引入css文件的時候,因為版本不同,引入的方式也不同,否則會因找不到相對應的css文件而報錯,比如最新的版本
import ’swiper/swiper-bundle.min.css’
具體用法參考[Swiper官方文檔]
有一個需要特別注意的是,需要在請求數(shù)據(jù)之后創(chuàng)建swiper實例
使用watch與$nextTick解決輪播的Bug分頁器Swiper其實應該是在輪播列表顯示(即categorys數(shù)組有了數(shù)據(jù))以后才初始化。
最開始categorys為空數(shù)組,有了數(shù)據(jù)才會顯示輪播列表,而要監(jiān)視categorys的數(shù)據(jù)變化,就要用到watch。
// 新建watch 監(jiān)聽categoryswatch: { categorys (value) { // categorys數(shù)組中有數(shù)據(jù)了 // 但界面還沒有異步更新 }}// 刪除mounted中的new Swiper...代碼
但其實state里的狀態(tài)數(shù)據(jù)改變(categorys接收數(shù)據(jù))與異步更新界面(顯示輪播列表)是兩個步驟。所以需要等一等,界面完成異步更新后才可以進行Swiper的初始化。
// 使用setTimeout可以實現(xiàn)效果, 但是時機不準確setTimeout(() => {// 創(chuàng)建一個Swiper實例對象, 來實現(xiàn)輪播new Swiper(’.swiper-container’, { autoplay: true, // 如果需要分頁器 pagination: { el: ’.swiper-pagination’, clickable: true }})}, 100)
利用vm.$nextTick( [callback] )來實現(xiàn)等待界面完成異步更新就立即創(chuàng)建Swiper對象
// 在修改數(shù)據(jù)之后立即使用它,然后等待 DOM 更新。this.$nextTick(() => {// 一旦完成界面更新, 立即執(zhí)行回調(diào) new Swiper(’.swiper-container’, { autoplay: true, pagination: { el: ’.swiper-pagination’, clickable: true }})
以上就是vue使用swiper插件實現(xiàn)輪播圖的示例的詳細內(nèi)容,更多關于vue使用swiper插件實現(xiàn)輪播圖的資料請關注好吧啦網(wǎng)其它相關文章!
相關文章: