ホームページ >ウェブフロントエンド >CSSチュートリアル >JavaScript/jQuery を使用して無限画像ループ スライダーを作成するにはどうすればよいですか?

JavaScript/jQuery を使用して無限画像ループ スライダーを作成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-03 00:30:03632ブラウズ

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

Infinity Loop Slider Concepts

この記事では、Infinity-Image-Loop- を構築するための、読みやすさ、コードの再利用性、優れたコーディング方法などのベスト プラクティスについて説明します。 JavaScript/jQueryを使用したWebサイトのスライダー。焦点は、無限ループ スライダーの錯覚を作成するために画像を配置する方法にあります。

無限ループ スライダーの実装

無限画像スライダーを作成する簡単な方法の 1 つは次のとおりです。ループ内でスライドさせる「n」個の画像があり、最初の画像が n 番目の画像の後に続き、その逆も同様です。最初と最後のイメージのクローンを作成し、次の操作を実行します。

  • 最初のイメージの前に最後のイメージのクローンを追加します。
  • 最初のイメージのクローンを後ろに追加します。最後の画像。

画像の数に関係なく、挿入する必要があるのは最大 2 つのクローン項目だけです。

すべての画像が幅 100 ピクセルで、オーバーフローのあるコンテナ内に表示されると仮定します。 hidden、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 ]
*/

最初、コンテナは左: -100px に配置され、最初の画像が表示されます。画像を切り替えるには、最初に選択した CSS プロパティに JavaScript アニメーションを適用します。

  • スライダーが 4 番目の画像にある場合、画像 1c に移動すると、画像 4 から 1c へのアニメーションが行われます。アニメーションが完了したら、最初の画像の実際のオフセットにスライダー ラッパーを即座に再配置します (例: 左に設定: コンテナーに対して -100px)。
  • 同様に、スライダーが最初の要素に配置されている場合、画像 1 から 4c まで前のアニメーションを実行し、コンテナを 4 番目の画像オフセット (左: コンテナまで -400 ピクセル) に移動するだけで、前の画像を表示できます。

スライド ループの調整

付属のフィドルはこの効果を示しています。以下に使用する基本的な 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 });
            }
        });   
     }
    
  });
});

結論

このソリューションは比較的簡単で効率的であり、必要な追加の DOM 挿入操作は 2 つだけであり、他のソリューションと比較してシンプルなループ管理ロジックが必要です。 -looping slider.

別のアプローチが存在する可能性もありますが、この方法は無限ループ スライダーを作成するための実用的で効果的なソリューションを提供します。

以上がJavaScript/jQuery を使用して無限画像ループ スライダーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。