麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

jQuery圖片滾動圖片的效果(另類實現(xiàn))

2019-11-20 22:40:21
字體:
供稿:網(wǎng)友

需求 : 圖片切換的時候下一屏不允許出現(xiàn)空白的項,換句話說就是 :

  1、當移動的最后一屏移動的個數(shù)小于要展示的個數(shù)的時候 ,只移動(展示個數(shù)-最后一屏的個數(shù)的)差值。 舉個例子: 每一屏都要展示7個,但總個數(shù)才10個,滾動到下一屏時候用戶看到的還是7個,這個時候需要移動的是三個

這個效果是基于jQuery寫的,只是想紀念下自己的學習 話不多說了,貼代碼

復制代碼 代碼如下:

(function( $ ){
     var slider = function( elem , args ){
         this.config = $.extend({
             effect   : 'x', //效果  水平 - x
             speed    : 600 , //動畫速度
             trigger  : 'mouseenter', //觸發(fā)事件
             callback : null , // 回調(diào)函數(shù)
             view     : 7
         }, args || {}  );

         this.history = [];//記錄移動的歷史記錄
         this.index = 0;
         this.el = elem;
         this.length = this.el.find('li').length;//記錄總長度
         this.width = this.el.find('li').eq(0).outerWidth();//記錄每一個單項的寬度
         this.init();
     }
     slider.prototype = {
         constructor : slider,
         init : function(){
             this.bindEvents();
         },
         bindEvents : function(){
             this.prev();
             this.next();
         },
         prev :  function(){
             this.el.find('[data-type="left"]').click( $.proxy(function(){

                 if( !this.history.length ) return;//如果記錄為空,證明沒有進行移動過,所以直接return

                 this.index--;
                 var step = this.history.pop();//取最后的移動步驟
                 var move =  step * this.width;//算出移動寬度
                 this.el.find("ul").animate( { "left" : "+="+move+"px" } , this.config.speed )

             } , this));
         },
         next : function(){
             this.el.find('[data-type="right"]').click( $.proxy(function(){
                 //如果是當前的最后一頁,直接return
                 if(this.index == parseInt( this.length / this.config.view , 10 ) ){
                     return;
                 }
                 this.index++;
                 //這個計算很重要
                 //計算 ( 下一頁 * view ) 展示個數(shù)是否大于總長度 : 好比當前在第一頁 (1+1) *7 > 12(總長度)
                 //則this.step 賦值為取余 ,也就是剩下要移動的個數(shù)
                 if( this.config.view * (this.index+1) > this.length ){
                     this.step =  this.length%this.config.view;
                 }else{
                     //否則移動展示的個數(shù)
                     this.step = this.config.view;
                 }
                 //記錄移動的歷史記錄
                 this.history.push(this.step);
                 var move = -1 * this.step * this.width;
                 this.el.find("ul").animate( { "left" : "+="+move+"px" } , this.config.speed )

             } , this));
         }
     }

     $.fn.slider = function( args ){
         return this.each(function(){
             var el = this;
             var plugins = new slider( $( el ) , args );
             $(el).data("slider" , plugins );
         });
     }
 })(jQuery)

開始對這個實現(xiàn)沒有好的想法,本來想利用一個變量記錄當前的移動個數(shù)的,但是后面突然想到用數(shù)組來做這樣子的處理,頓時感覺清晰了。

這個的實現(xiàn)重點是一個記錄移動步驟的數(shù)組。向左移動的時候往數(shù)組里面push移動的步驟,向右移動的時候,從數(shù)組里面取最后一項 [].pop()。

這樣子很好的實現(xiàn)了需求,做的比較粗糙,麻煩各位大神提點意見

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产色视频免费 | 精品国产一区二区三区天美传媒 | 久久综合福利 | 在线观看免费视频麻豆 | 91热久久免费频精品黑人99 | 午夜亚洲影院 | 日本在线播放一区二区三区 | 日韩精品中文字幕在线观看 | 亚洲综合视频网 | 小视频成人 | 欧美乱码精品一区 | 亚洲网在线观看 | 日韩av电影在线观看 | 成年人国产视频 | 国产1区2区3区中文字幕 | 久久成人亚洲 | 久久精品一区二区三区四区五区 | 精品亚洲一区二区三区 | 天天躁狠狠躁夜躁2020挡不住 | 欧美激情猛片xxxⅹ大3 | 国产中出视频 | 国产精品99久久久久久久女警 | 羞羞答答tv| 国产韩国精品一区二区三区久久 | 九九热精品在线 | 色婷婷a v | 亚洲午夜免费电影 | 欧美成人免费一区二区三区 | 免费观看的毛片手机视频 | 黄色一级毛片免费看 | 日本不卡一区二区在线观看 | 福利免费观看 | 日本在线播放一区二区三区 | 涩涩屋av| 激情宗合网 | 最新在线黄色网址 | 成片免费观看大全 | 中文字幕一区在线观看视频 | 久久久经典视频 | 亚洲欧美日韩免费 | av影院在线播放 |