今天講點mui的使用經驗吧,因為個人能力所限,所以很多技術只能達到使用的水平,至于原理還未摸清,也請高手們不吝賜教。
因為公司項目需求,需要實現多張圖片輪播的功能,類似android原生的gallery,左右滑動切換到前后兩張圖片。
對于一個前端新手來說,我自認沒有精力從頭重現一個這樣的功能,所以用了mui的框架,加點自己的改動來達到項目的要求。
先說下mui已經提供的關于gallery的功能,看它的api文檔即可:UI組件.圖片輪播
好了,現在基本的工具已經有了,我們要做的就是拿它來加加工,以達到特定的目的。
在mui原有gallery上需要添加的功能是,當按下需求圖中藍色箭頭時,重新加載前或后四張圖片(這四張圖片定義為新的一輪,即前一輪/后一輪),并且讓gallery默認選中第一張。
在實現這個功能的過程中,遇到了一個問題,如果我滑動到了當前四張圖片中的第三張時,按藍色箭頭(右),切換到后四張圖片,并重新初始化gallery,galley初始化代碼如下:
var gallery = mui('.mui-slider');gallery.slider({ interval:0//自動輪播周期,若為0則不自動播放,默認為0;});
雖然選擇器(圖中小白點)設置到了第一的位置,但當我滑動圖片時卻發現,圖片是從第三張滑動到了第二張,而不是從第一張滑動到第二張,這是因為gallery還記憶著上一輪圖片滑動到的位置。
關于這個問題,mui給出的解決辦法是,調用gotoItem(index)方法,index是跳轉到第index張圖片,從0開始。所以當我切換到后一輪的四張圖片時,我還需要讓選擇器設置成第一張圖片的位置,即index == 0。
但是,這樣同時也會造成一個新的問題,如果我把index從3設為0,gallery在切換的工程中會連同2,1這兩張圖片一起滑過,那么如果后一輪顯示的圖片很多,從最后一張切回到第一張時,會造成很差的視覺感受。
然而換個角度來看,如果后一輪只有一張圖片的話,那么當我把index從3設為0,就不會有連續滑動的問題了,因為圖片僅有一張,想滑也沒得滑啊。
到這里問題就講完了,解決的方法也是投機取巧而已:在切換新一輪圖片前先切換到只包含一張圖片的炮灰輪里,再切換到指定的一輪中即可。
我還沒有研究過mui的源碼,估計以后也不太會去研究,只能做到遇到問
題解決問題罷了。