首頁 > web前端 > css教學 > 如何使用 JavaScript/jQuery 建立無限圖像循環滑桿?

如何使用 JavaScript/jQuery 建立無限圖像循環滑桿?

Susan Sarandon
發布: 2024-11-03 00:30:03
原創
611 人瀏覽過

How can I create an infinite image loop slider using JavaScript/jQuery?

無限循環滑桿概念

本文討論了構建無限圖像循環的最佳實踐,例如可讀性、代碼可重用性和良好的編碼實踐-使用JavaScript/jQuery 的網站滑桿。重點是如何排列圖片以創建無限循環滑桿的錯覺。

實現無限循環滑桿

建立無限影像滑桿的簡單方法如下:假設您有「n」張影像要循環滑動,第一個影像位於第n 個影像之後,反之亦然。建立第一個和最後一個影像的克隆,然後執行以下操作:

  • 將最後一個影像的克隆附加在第一個影像之前。
  • 將第一個影像的克隆附加在第一個影像之後最後一張圖片。

無論圖片數量多少,最多只需要插入兩個克隆項目。

假設所有圖片都是 100px 寬,並顯示在一個有溢出的容器中: hide、display: inline-block、white-space: nowrap,容納圖像的容器可以輕鬆地排成一行。

對於 n = 4,DOM 結構將如下所示:

offset(px)     0       100     200     300     400     500
images         |   4c   |   1   |   2   |   3   |   4   |   1c
                                                   
/*                 ^^                                       ^^
       [ Clone of the last image ]              [ Clone of the 1st image ]
*/
登入後複製

最初,容器的位置為 left: -100px,允許顯示第一張圖像。若要在圖片之間切換,請將 JavaScript 動畫套用至您原先選擇的 CSS 屬性。

  • 當滑桿位於第 4 個圖像上時,移動到圖像 1c 涉及從圖像 4 到 1c 的動畫。動畫完成後,立即將滑桿包裝器重新定位在第一個影像的實際偏移處(例如,將 left: -100px 設定為容器)。
  • 同樣,當滑桿位於第一個元素上時,執行從圖像1 到4c 的上一個動畫並將容器移動到第4 個圖像偏移(左:到容器的-400px)足以顯示上一個影像。

編排幻燈片循環

隨附的小提琴示範了這種效果。以下是使用的基本 JavaScript/jQuery 程式碼:

$(function() {
 
  var gallery = $('#gallery ul'),
      items   = gallery.find('li'),
      len     = items.length,
      current = 1,  /* the item we're currently looking */
      
      first   = items.filter(':first'),
      last    = items.filter(':last'),
      
      triggers = $('button');
  
  /* 1. Cloning first and last item */
  first.before(last.clone(true)); 
  last.after(first.clone(true)); 
  
  /* 2. Set button handlers */
  triggers.on('click', function() {

    var cycle, delta;
    
    if (gallery.is(':not(:animated)')) {
     
        cycle = false;
        delta = (this.id === "prev")? -1 : 1;
        /* in the example buttons have id "prev" or "next" */  
    
        gallery.animate({ left: "+=" + (-100 * delta) }, function() {
      
            current += delta;
       
            /** 
             * we're cycling the slider when the the value of "current" 
             * variable (after increment/decrement) is 0 or when it exceeds
             * the initial gallery length
             */          
            cycle = (current === 0 || current > len);
       
            if (cycle) {
                /* we switched from image 1 to 4-cloned or 
                   from image 4 to 1-cloned */
                current = (current === 0)? len : 1; 
                gallery.css({left:  -100 * current });
            }
        });   
     }
    
  });
});
登入後複製

結論

這個解決方案相對簡單高效,與非-循環滑桿。

雖然可能存在替代方法,但此方法為建立無限循環滑桿提供了實用且有效的解決方案。

以上是如何使用 JavaScript/jQuery 建立無限圖像循環滑桿?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板