Swiper是目前較爲流行的移動端觸摸滑動插件,由於其簡單好用易上手,受到不少前端開發者的歡迎。
今天在使用Swiper的時候遇到這個問題:前端
使用模板引擎動態生成swiper-slide
類,在swiper-wrapper
裏生成6個以上的滑動頁,但是就是劃不到第二頁,嘗試將longSwipesRatio
的值修改到最小,仍然不起做用。
<div class="swiper-container" ms-visible="result.status==1"> <div class="swiper-wrapper" > <!-- =======循環部分======= --> <div class="swiper-slide" ms-repeat="result.mediaList"> //此處爲一個滑動頁內容 </div> <!-- ============== --> </div> </div>
在測試時發現,手動複製n個循環部分,則能夠滑動n個塊;手動調節窗口大小,使頁面文檔發生改變(動態響應)後,能夠正常滑動。
因而猜想swiper的機制是:初始化的時候自動掃描swiper-wrapper
類下有多少個swiper-slide
類塊,則容許滑動多少個塊。
而數據在swiper初始化以後才異步請求到,swiper則沒法正確scan有多少個slide(實際上找到一個待循環模板),因此劃不動。app
找到緣由後,只須對症下藥。在查閱Swiper的API時發現,有這樣兩個參數:observer
和observeParents
,前者啓動動態檢查器,當改變swiper的樣式(例如隱藏/顯示)或者修改swiper的子元素時,自動初始化swiper。後者原理和前者同樣,只是將observe應用於Swiper的父元素。二者默認值都爲false
。
因此在原來的swiper初始化代碼中加上這兩行便可。異步
var mySwiper = new Swiper('.swiper-container',{ pagination : '.swiper-pagination', paginationClickable: true, //…… observer:true,//修改swiper本身或子元素時,自動初始化swiper observeParents:true,//修改swiper的父元素時,自動初始化swiper })
若對您有幫助,能夠贊助並支持下做者哦,謝謝!ide