jQueryカルーセル機能を実装する方法

jQueryカルーセル機能を実装する方法

この記事では、jQueryカルーセル機能の実装コードを参考までに共有します。具体的な内容は次のとおりです。

jQuery カルーセル (アニメーションなし)

HTMLレイアウト

<!-- カルーセル領域全体 -->
  <div class="コンテナ">
   <!-- カルーセル-->
   <ul class="items" style="left:-200px">
   <!-- 実際には 5 枚の画像のみが回転され、最初の画像は最後の画像に配置され、最後の画像は最初の画像に配置されます (これはトリックです) -->
    <li>5</li>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>1</li>
   </ul>
   <!-- 左ページボタンと右ページボタン -->
   <span class="left">&lt;</span>
   <span class="right">&gt;</span>
   <!-- ドット -->
   <ul class="ポイント">
    <li class="current"></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
   </ul>
</div>

CS

<スタイル>
   /* カルーセルエリア*/
   。容器 {
    幅: 200ピクセル;
    高さ: 100px;
    マージン: 100px 自動;
    オーバーフロー: 非表示;
    位置: 相対的;
   }

   ul {
    位置: 絶対;
    リストスタイルタイプ: なし;
    幅: 1400ピクセル;
    パディング: 0;
    マージン: 0;
   }

   /* カルーセル画像*/
   .items li {
    幅: 200ピクセル;
    高さ: 100px;
    マージン: 0;
    パディング: 0;
    フロート: 左;
    背景色: ピンク;
    テキスト配置: 中央;
   }
   /* 左ページと右ページの範囲 */
   スパン {
    表示: ブロック;
    幅: 20px;
    高さ: 30px;
    背景色: rgba(70, 130, 180, 0.3);
    位置: 絶対;
    上位: 50%;
    変換: translateY(-50%);
    行の高さ: 30px;
   }

   スパン:ホバー{
    カーソル: ポインタ;
   }

   。左 {
    左: 0;
   }

   。右 {
    右: 0;
   }
   /* ドット */
   .ポイント{
    幅: 45px;
    マージン: 0;
    パディング: 0;
    下: 3px;
    左: 50%;
    変換: translateX(-50%);
   }

   .points li {
    フロート: 左;
    幅: 7px;
    高さ: 7px;
    境界線の半径: 50%;
    マージン: 1px;
    背景色: rgba(0, 0, 0, 0.5);
   }

   .points li:hover {
    背景色: rgba(255, 250, 205, 1);
   }

   .ポイント.現在{
    背景色: rgba(255, 250, 205, 1);
   }
</スタイル> 

jQuery

<script type="text/javascript">
   // 1. ボタンをクリックしてページを左右に切り替えます------カルーセル + アニメーション、マウスが入ると再生が一時停止し、マウスが外に出ると再生が続行されます// 2. ページは 3 秒ごとに自動的に切り替わります// 3. ドットは一緒にスタイルを切り替えます// 左に切り替え let $left = $('.left')
   // 右に切り替える let $right = $('.right')
   //画像li
   $list = $('.items') とします。
   $items = $list.children() とします
   // 大きなコンテナ let $container = $('.container')
   // ポイント let $points = $('.points').children()
   定数長さ = $points.length

   //合計オフセット設定 = li.width
   定数項目幅 = 200
   // 各アニメーション時間をミリ秒単位で設定します
   定数時間 = 50
   // 移動回数 const n = 20
   // リストの最大オフセット - (長さ+1)*li.width
   定数 long = -(長さ + 1) * 項目の幅
   // ページをめくるかどうかを指定します。デフォルトではページはめくられていません。------>ページをめくるときにページをクリックしたときの位置ずれの問題を解決します。let moveFlag = false
   //タイマー移動時間 const TIME = 3000
   // 左に切り替える $left.click(function() {
    アイテムを変更する(true)
   })
   // 右に切り替える $right.click(function() {
    アイテムの変更(偽)
   })
   // 自動切り替え let timer = setInterval(function() {
    アイテムの変更(偽)
   }、 時間)
   // マウスが入ると再生が一時停止し、マウスが外に出ると再生が続行されます$container.hover(function() {
    クリアインターバル(タイマー)
   }、 関数() {
    タイマー = setInterval(関数() {
     アイテムの変更(偽)
    }、 時間)
   })
   //ドットをクリックしてページをめくる$points.click(function() {
    //現在クリックされている要素のインデックスを取得します
    インデックス = $(this).index() とします。
    // 対応するインデックスマップにジャンプ changeItem(index)
    // dots の他の兄弟のスタイルをキャンセルします$points.eq(index).addClass('current').siblings().removeClass('current')
   })
   // 左右切り替え関数のカプセル化 function changeItem(flag) {
    // ページが現在めくられている場合は、直接戻ります if (moveFlag) {
     戻る
    }
    // ページがめくられていない場合は、コードを実行し、moveFlag を true に変更してページがめくられていることを示します。moveFlag = true
    // offset はオフセットです。let offset = 0;
    // 
    currentLeft = parseInt($list.position().left) とします。
    // 渡された型がブール値の場合、スムーズな左右のページめくりを意味します // 渡された型が数値の場合、ドットをクリックしてページをめくることを意味します if (typeof flag == 'boolean') {
     // 左に反転するか右に反転するかを決定し、対応する変位を設定します offset = flag ? itemWidth : -itemWidth
    } それ以外 {
     // ドットをクリックするとページがめくられます // -(flag + 1)*itemWidth はターゲット変位、currentLeft は現在の距離です offset = -(flag + 1) * itemWidth - currentLeft
    }
    // 実行回数を累積するために使用される let i = 0
    /*
    アニメーション効果の切り替え:回数に応じて合計距離を計算 = 合計オフセット = オフセット
    毎回時間を設定する
    */
    // 各移動の距離 itemOffset
    itemOffset = offset / n とします。
    // 現在の左を取得する
    // タイマー関数 const timer = setInterval(function() {
     // i===n になるまで実行されるたびに 1 を加算します。つまり、回数が十分になるとタイマーが停止します i++
     現在の左 += 項目オフセット
     // 左の値を設定します // 最初に値を設定してから判断する必要があります $list.css('left', currentLeft)
     もし (i === n) {
      // 変位は十分です。タイマーをクリアします。clearInterval(timer)
      // ページめくり終了 moveFlag = false
      // ドットはそれに応じて変化します$points.eq(Math.abs(currentLeft / itemWidth) - 1).addClass('current').siblings().removeClass('current')
      // 最後の画像が見つかったら、2 番目の画像に切り替えます。ビジュアルはカルーセルです。if (currentLeft == long) {
       $list.css('left', -itemWidth)
       // ドットを実際の最初の画像に設定します $points.eq(0).addClass('current').siblings().removeClass('current')
       // 最後の画像の一番下の画像に到達した場合は、実際の最初の画像に戻ります} else if (currentLeft == 0) {
       $list.css('left', -length * itemWidth)
       // ドットを実際の最後の画像に設定します $points.eq(length - 1).addClass('current').siblings().removeClass('current')
      }
     }
    }、 時間)
   }
</スクリプト> 

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • jQuery はカルーセル マップを実装します。詳細な説明とサンプル コード
  • jQuery を使用して左右のカルーセル効果を記述する
  • jQueryはシームレスな左右のカルーセルを実装します
  • jQueryプラグインスライドでシームレスなカルーセル効果を実現
  • jQuery はカルーセル チャートを実装し、その原理の詳細を説明します。
  • jQuery アダプティブカルーセルプラグイン Swiper の使用例
  • jQueryは左右にスライドするカルーセルを実装します
  • JQuery と HTML+CSS を使用して、小さなドットと左右のボタンを備えたカルーセルを作成します。
  • jQueryで実装したシンプルなカルーセル機能【初心者向け】
  • jQuery をベースにフェードインとフェードアウト効果カルーセルを実装する

<<:  Nginxドメイン名転送の実装

>>:  CentOS 6 および 7 での MySQL 5.7 の詳細なインストール チュートリアル

推薦する

Vueプロジェクトでvuexを使用する方法

目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...

CSS3でアニメーションを実装する3つの方法

これは、面接者の CSS に関する基本的な知識をテストするものです。 CSSでアニメーションを実装す...

Nginx リバース プロキシを使い始める

目次概要リバースプロキシの役割Nginx リバース プロキシ イントラネット侵入 8081 ポートの...

MySQLユーザー権限テーブルについての簡単な説明

MySQL はインストール時に自動的に mysql という名前のデータベースを作成します。mysql...

クラウドサーバーパゴダパネルの詳細なインストール手順

目次0x01. パゴダパネルをインストールする0x02. サーバーポートを開く0x03. ブラウザを...

1行のコードでLinuxのプロセスを隠す方法を学ぶ

友人たちはいつも、Linux のプロセスを隠す方法を私に尋ねます。私は、どの程度隠したいのか、カーネ...

Nginx+SpringBoot による負荷分散の実装例

負荷分散の概要Nginx の負荷分散実装を紹介する前に、負荷分散の分類について簡単に説明します。負荷...

mysql 5.6.23 winx64.zip インストール詳細チュートリアル

WindowsにMySQLの圧縮バージョンをインストールする方法の詳細については、以下を参照してくだ...

vue3.0 プロジェクトを素早く構築するための手順を完了する

目次1. 3.0をより適切にサポートするには、vue/cliのバージョンが4.5.0以上であることを...

Alibaba Cloud SSHリモート接続がしばらくすると切断される問題を解決

問題の再現Alibaba Cloud Server は、Finalshell リモート接続を使用して...

IE6/7 で絶対配置された要素が不可解に消えたりブロックされたりする問題を解決する方法

1. 絶対配置レイヤーの隣接フローティング レイヤーの幅が親レイヤーの幅と等しくなく、フロートがクリ...

Windows 10でDockerコンテナのポートにアクセスできない問題に対する完璧な解決策

Windows 10 で Docker コンテナのポートにアクセスできない問題を解決する (ポート ...

Vue.jsで実装されたカレンダープラグインの使い方を詳しく説明します

本日実装する機能は、以下の機能です。vue.js シミュレーションカレンダープラグインさて、もう無駄...

Linux 上の Vim で色とテーマを変更する方法

Vim は Linux でよく使用されるテキスト エディターです。 Vim は、Sublime や ...

JSで画面録画機能を作成する

OBS studioかっこいいですが、 JavaScriptもっとかっこいいです。では、 JavaS...