swiper使用過程中不斷踩坑,有時一個很小的問題,如果用自己的方法實現的話會花很長時間,但其實swiper的api文檔里一般都會有,所以得多研究研究它的api文檔,網上查一下別人使用過程中遇到的類似問題,就可以大大縮短開發時間。特此記錄一下開發中遇到的問題
一、:移動端的效果要求有以下幾點:1.上方是輪播頁和對應的分頁器,下方需要給它們相對應的選擇按鈕? 2.用戶可點擊選擇按鈕,上方將顯示對應的內容塊 ?3.用戶可滑動上方的內容,下面的選擇按鈕相對應改變
問題1和3都比較容易解決,用swiper很容易實現,問題3需要用到swiper的回調函數或者自己都行,回調函數快一點,代碼如下:
但是問題2因為對API文檔不熟悉就遇到點麻煩了,首先考慮的也是用它的回調函數來點擊按鈕控制上面的相應的輪播,然后自己寫了個方法,發現它的輪播是通過控制位置的改變,這時又要計算其每一塊相對應的位置,這就很麻煩了,于是又回去找swiper的api,由于不熟悉的原因,很費力的才找到一個方法,發現非常簡單就可以解決了,就一句:
mySwiper.slideTo(index, speed, runCallbacks)
Swiper切換到指定slide。
index:必選,num,指定將要切換到的slide的索引。
speed:可選,num(單位ms),切換速度
runCallbacks:可選,boolean,設置為false時不會觸發onSlideChange回調函數。
二、:一個頁面里同時需要兩個不同的輪播效果,看到這個首先又去查了apI,找到了命名空間里的wrapperClass和slideClass,覺得可以開始做
做出來的效果發現它們根本就做不了兩個不用的輪播效果,想到可能是最外層.swiper-container的問題,于是又改了最外層的類名成my-container,原本效果應該只是在swiper-container這個容器里輪播的,如:
改了最外層類名成my-container后,效果就完全變了,會變成整個屏幕都可以滾動
百思不得其解,網上也找了,沒發現什么問題,API文檔里也沒看到這個問題,經過多次的試驗后,發現要改它的類,給同一個頁面不同的輪播效果其實是可以的,但你要保留swiper自帶的類名swiper-container就可以了
也可以給id來控制改變不同的效果,最主要的是保留swiper-container這個類名,同樣的發現命名空間里的wrapperClass和slideClass的類名好像也是要保留的才沒問題的,官方的Api文檔里沒有提到要保留,這個問題就都這里了
三:用到的一些屬性:
1.freeMode
默認為false,普通模式:slide滑動時只滑動一格,并自動貼合wrapper,設置為true則變為free模式,slide會根據慣性滑動且不會貼合。
2.slidesPerView
設置slider容器能夠同時顯示的slides數量(carousel模式)。
可以設置為number或者 'auto'則自動根據slides的寬度來設定數量。
loop模式下如果設置為'auto'還需要設置另外一個參數loopedSlides。
3.loop
設置為true 則開啟loop模式。loop模式:會在原本slide前后復制若干個slide并在合適的時候切換,讓Swiper看起來是循環的。
loop模式在與free模式同用時會產生抖動,因為free模式下沒有復制slide的時間點。
4.observer
啟動動態檢查器(OB/觀眾/觀看者),當改變swiper的樣式(例如隱藏/顯示)或者修改swiper的子元素時,自動初始化swiper。
默認false,不開啟,可以使用update()方法更新。
5.observeParents
將observe應用于Swiper的父元素。當Swiper的父元素變化時,例如window.resize,Swiper更新。
6.centeredSlides
設定為true時,活動塊會居中,而不是默認狀態下的居左。
7.preventClicksPropagation
阻止click冒泡。拖動Swiper時阻止click事件。