因為工作需求,我必須要在Swiper上讓滾輪可以作動,達成左右移動的效果。
以下是我們Swiper精簡過後的基本結構,我們將放在陣列中的資料以V-for的方式產生出來。
<div v-swiper:mySwiper="swiperOption" ref="mySwiper" @mousewheel="scrollFunc">
<div class="SWline"></div>
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(item, index) in playList" :key="index">
<div class="swiperList" @mousewheel.self="wheelScroll">
<p>{{ item.time }}</p>
<p>{{ item.content }}</p>
<p>{{ item.score }}</p>
</div>
</div>
</div>
</div>
當時得知這個需求後看了Swiper官方的文件想說只要在 data swiperOption 物件中加上
mousewheel : true 就能輕鬆解決了,結果事情並沒有我想的如此簡單。😅
加上這段後滾輪依舊沒有達成左右移動的效果,再加上網頁本身內容較長,
垂直方向的滾輪依然會繼續運作。
所以我們就有兩個問題要等待解決了。
自己測試過後主要就是利用 preventDefault 去停止預設的行為即可。
scrollFunc(evt) {
evt = evt || window.event
evt.preventDefault()
evt.stopPropagation()
return false
},
再將這個 Function 以 @mousewheel 的方式加到不希望垂直作動的範圍上,
這樣在該DOM元素上觸發滾輪時,整個網頁就不會跟著上下移動了。
至於第二個問題,則是看官方API後發現他有 slideNext 和 slidePrev 兩個方法。
可以控制Swiper前後移動,就像是多數的輪播套件有前後按鈕一樣。
只是這次我需要利用滾輪來觸發這兩個方法。
知道該怎麼做之後相對的簡單許多,一樣在需要滾輪作用的元素上加入@mousewheel