需求 : 圖片切換的時候下一頁不允許出現空白的項,換句話說就是 :
1、當移動的最後一屏移動的個數小於要展示的個數的時候 ,只移動(展示個數-最後一屏的個數的)差值。 舉個例子: 每一屏都要展示7個,但總個數才10個,滾動到下一屏時候用戶看到的還是7個,這個時候需要移動的是三個
這個效果是基於jQuery寫的,只是想紀念下自己的學習 話不多說了,貼代碼
(function( $ ){
var slider = function( elem , args ){
: 'x', //效果 水平- x
speed callback : null , // 回呼函數
view : 7
| {} );
this.history = [];//記錄移動的歷史記錄
this.length = this.el.find('li').length;//記錄總長度
this.width = this.el.find('li').eq(0).outerWidth();//記錄每一個單一項目的寬度
this.init();
}
slider.prototype = { init : function(){
this.bindEvents();
},
bindEvents : function(){
this.next();
},
prev : function(){ el.find('[data-type="left"]').click( $.proxy(function(){
,證明沒有進行移動過,所以直接return
this.index--;
🎜> var move = step * this.width;//算出移動寬度
this.el.find("ul").animate( { "left" : " =" move "ppx" } }, this));
},
this.el.find('[data-type="right"]').click( $.proxy( function(){
//如果為目前的最後一頁,直接return
10 ) ){
return;
}
this.index ;
//計算( 下一頁* view ) 顯示個數是否大於總長度: 好比目前在第一頁(1 1) *7 > 12(總長度)
//則this.step 被賦值為剩餘,也就是剩下要移動的數量
this .length ) {
this.step = this.length%this.config.view; > }
ush(this.step);
var move = -1 * this.step *this.width;
🎜>
$.fn.slider = function( args ){
return this.each(function(){ var plugins = 新 slider( $( el ) , args );
$(el).data("slider" , plugins );
🎜>
開始對這個實現沒有好的想法,本來想利用一個變數記錄當前的移動個數的,但是後面突然想到用數組來做這樣子的處理,頓時感覺清晰了。
這個的實作重點是一個記錄移動步驟的陣列。往左移動的時候往陣列裡面push移動的步驟,往右移動的時候,從陣列裡面取最後一項 [].pop()。
這樣子很好的實現了需求,做的比較粗糙,麻煩各位大神提點意見