これは、「通常の」カルーセルを作成するために行ったことだと思います。HTML が次のようになっているとします。
<div class="viewport">
<div class="container">
<div class="group"> <!-- Without this div probably --!>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
</div>
それを「カルーセル」にするには、ビューポートの幅を固定し、コンテナーを展開してすべての子アイテムを含めます ( を使用overflow: hidden
)。右にスクロールすると左オフセットが減少し、左にスクロールすると左オフセットが増加します。左オフセット >= 0 の場合、最初の項目にいます。左オフセット <= -(コンテナーの幅) の場合、最後の項目にいます。
左右にスクロールするたびにこれらの条件を確認する必要があります。したがって、「グループ」の前後にコンテナのコピーを追加します。古いグループが表示されなくなったら、それを削除できます。これにより、スクロールがスムーズになり、位置が最後から最初にスナップしなくなります。ただし、アイテム数が多い場合、これは遅くなる可能性があります。したがって、最初は、アイテムをたとえば 5 つの多くの「グループ」に分割し、最後に到達したら、最初/最後のグループのコピーを追加し、最初/最後のグループを削除することができます。
別のオプションは、反対方向に高速でスクロールすることです。ユーザーに視覚的なフィードバックを与えない反対側の端にスナップする代わりに、スクロールを反対側の端まではるかに高速にアニメーション化できます。その場合、ユーザーが最後までスクロールすると、スクロールが停止し、もう一度スクロールすると最初に戻るので、ユーザーは何が起きているかに驚かされません。
それはちょうど私の 2 セントです。私はかつてカルーセルを行いましたが、この機能はありませんでした。私はそれを実装せずにそれを考えていました。
それが役に立てば幸い。