JS は複数のタブを切り替えるカルーセルを実装します

JS は複数のタブを切り替えるカルーセルを実装します

カルーセルアニメーションは、ページの外観とインタラクティブなパフォーマンスを向上させることができます。次に、HTML、CSS、Javascript などのフロントエンド開発の基本知識を使用して、シンプルなカルーセルを作成する方法を学びます。

カルーセルの紹介: ウェブサイトの特定のモジュールでは、コンピューターでマウスをクリックしたり、マウスを動かしたり、携帯電話で指をスライドしたりすることで、さまざまな画像を表示できます。このモジュールは、カルーセル モジュールと呼ばれます。

(何か間違ったことがあれば、批判や訂正を歓迎します。役に立ったと思ったら、星を付けてくださいね〜)

HTMLレイアウト部分:

<div id="ボックス">
    <div class="風景写真">
      <img class="show" src="imgs/s2.jpg" alt="風景">
      <img src="imgs/s3.jpg" alt="風景">
      <img src="imgs/s1.jpg" alt="風景">
      <img src="imgs/s5.jpg" alt="風景">
      <img src="imgs/s4.jpg" alt="風景">
    </div>
    <div class="車の写真">
      <img src="imgs/animal4.jpg" alt="動物">
      <img src="imgs/animal3.jpg" alt="動物">
      <img src="imgs/animal2.jpg" alt="動物">
      <img src="imgs/animal1.jpg" alt="動物">
    </div>
    <div class="エンターテイメント写真">
      <img src="imgs/entertainment1.jpg" alt="エンターテイメント">
      <img src="imgs/entertainment2.jpg" alt="エンターテイメント">
      <img src="imgs/entertainment3.jpg" alt="エンターテイメント">
      <img src="imgs/entertainment4.jpg" alt="エンターテイメント">
      <img src="imgs/entertainment5.jpg" alt="エンターテイメント">
    </div>
    <div class="leftbar">
      <div class="checked">横向き</div>
      <div>有名な車</div>
      <div>エンターテイメント</div>
    </div>
    <div class="bottombar">
 
    </div>
</div>

CSS スタイル部分:

/* レイアウトの利便性のため、flex は主にコンテナで使用されます */
#箱 {
      位置: 相対的;
      幅: 460ピクセル;
      高さ: 300px;
      マージン: 40px 自動;
      境界線: 1px実線rgb(109, 98, 98);
      ユーザー選択: なし;
    }
    /* サイドバーのレイアウト */
    .左バー{
      ディスプレイ: フレックス;
      flex-direction: 列;
      コンテンツの両端揃え: スペースの間;
      位置: 絶対;
      上: -1px;
      左: -80px;
      幅: 80ピクセル;
      高さ: 100%;
      テキスト配置: 中央;
      フォントサイズ: 20px;
      カーソル: ポインタ;
    }
 
    .leftbar div {
      フレックス: 1;
      行の高さ: 100px;
      背景色: cadetblue;
      文字間隔: 5px;
    }
 
    .leftbar div:n番目の子(2) {
      上境界線: 1px 実線 #fff;
      下境界線: 1px 実線 #fff;
    }
 
    /* 下部スイッチボタンスタイルのデザイン*/
    .ボトムバー{
      ディスプレイ: フレックス;
      コンテンツの両端揃え: スペースの間;
      位置: 絶対;
      下: -1px;
      右: -1px;
      zインデックス: 10;
      幅: 200ピクセル;
      高さ: 30px;
      カーソル: ポインタ;
    }
 
    .ボトムバー div {
      フレックス: 1;
      行の高さ: 30px;
      背景色: rgb(232, 233, 235, .5);
      テキスト配置: 中央;
      フォントの太さ: 700;
    }
 
    .bottombar div~div {
      border-left: 1px のグレー実線;
    }
 
    画像 {
      位置: 絶対;
      表示: ブロック;
      幅: 460ピクセル;
      高さ: 300px;
    }
 
    。見せる {
      zインデックス: 5;
    }
 
    .leftbar .checked、
    .bottombar .checked {
      背景色: rgb(241, 5, 5);
    }

JavaScriptロジック実装部分:

var Box = document.querySelector('#box'), pic = Box.querySelectorAll('.pic'),
    Idx = 0、インデックス = 0、タイマー = null、
    ltDiv = Box.querySelector('.leftbar')、btDiv = Box.querySelector('.bottombar')、
    画像 = Box.querySelectorAll('img');
 
    function createBtBar(len){// 下部のスイッチボタンを動的に作成します var str = '';
      (var i = 0; i < len; i++) の場合 {
        str += `<div>${i + 1}</div>`;
      }
      btDiv.innerHTML = str;
      btDiv.children[0].classList.add('チェック済み');
    }
 
    function initialize(){//ページの初期状態 createBtBar(pic[0].children.length);
    }
    初期化します。
 
    function clearZindex(){//すべての画像の位置レベルをリセットします for (var k = 0; k < Img.length; k++) {
        Img[k].classList.remove('表示');
      }
    }
 
    ltDiv.addEventListener('click', (e) =>{//サイドバー項目 switchif (e.target.tagName.toLowerCase() === 'div') {
        (var j = 0; j < ltDiv.children.length; j++) {
          ltDiv.children[j].classList.remove('checked');
        }
 
        Zindexをクリアします。
        idx = 0;
        インデックス = getEleIdx(e.target);
        ltDiv.children[index].classList.add('checked');
        pic[index].children[0].classList.add('表示');
        createBtBar(pic[index].children.length);
      }
    });
 
    btDiv.addEventListener('click', (e) =>{//デリゲートは下部のスイッチボタンをリッスンします if (e.target.tagName.toLowerCase() === 'div') {
        関数changePic(コールバック) {
          btDiv.children[Idx].classList.remove('チェック済み');
 
          Zindexをクリアします。
          コールバック && コールバック();
          btDiv.children[Idx].classList.add('checked');
          pic[index].children[Idx].classList.add('show');
        }
        changePic(関数() {
          Idx = getEleIdx(e.target);
        });
      }
    });
 
    function getEleIdx(item){//DOM要素のインデックスを取得 var elements = item.parentNode.children;
      (var i = 0, len = elements.length; i < len; i++) {
        if (item === elements[i]) {
          i を返します。
        }
      }
    }
 
    function loopShow(){//ループ自動表示 clearInterval(timer);
      タイマー = setInterval(関数() {
        pic[index].children[Idx].classList.remove('show');
        btDiv.children[Idx].classList.remove('チェック済み');
        idx += 1;
        (Idx < 0 || Idx > pic[index].children.length - 1)の場合{
          idx = 0;
        }
        pic[index].children[Idx].classList.add('show');
        btDiv.children[Idx].classList.add('checked');
      }, 1000);
    }
 
    ループ表示();
 
    Box.addEventListener('mouseover', 関数() {
      clearInterval(timer); // マウスを表示領域に移動してカルーセルを停止します });
    Box.addEventListener('mouseout', 関数() {
      loopShow(); // マウスを表示領域外に移動すると自動的に回転します });

具体的な表示効果は以下のとおりです。

(ヒント:写真を準備して自分のフォルダに入れてください〜)

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

以下もご興味があるかもしれません:
  • カルーセル効果を実現するネイティブJavaScript
  • jsを使用してシンプルなカルーセル効果を実現する
  • シンプルなカルーセルの最も完全なコード分析を実装するJavaScript(ES6オブジェクト指向)
  • シンプルなカルーセル チャートを実装するための JavaScript の最も完全なコード分析 (ES5)
  • カルーセルの完全なコードを実装するためのjs
  • ネイティブ js でカルーセルを実装するためのサンプル コード
  • 携帯電話のスライドスイッチカルーセル画像の例をサポートする効果を実現するためのjs
  • JS カルーセル図の実装の簡単なコード
  • js で左右のボタンをクリックして画像を再生する
  • カルーセル例の JavaScript 実装

<<:  Linux ifconfig コマンドの使用

>>:  Linux bzip2 コマンドの使用

推薦する

MySQL学習エンジンの詳細な説明、説明、権限

エンジン導入InnodbエンジンInnodb エンジンは、データベース ACID トランザクションを...

Windows で Nginx を使用して https サーバーとリバース プロキシを構成する際の問題

リクエストロジックフロントエンド --> https経由でnginxをリクエストnginx -...

スライドボタン効果を実現するネイティブJS

Jsで作ったスライドボタンの具体的なコードは参考までに。具体的な内容は以下のとおりですまずエフェク...

Linux で MySQL スケジュール タスク バックアップ データを実装する方法

序文バックアップは災害復旧の基礎であり、システム操作エラーやシステム障害によるデータ損失を防ぐために...

MySQL における Decimal 型と Float Double 型の違い (詳細説明)

MySQL には、10 進数などの標準データ型だけでなく、float や double などの非標...

MySQL 文字列インデックスのより合理的な作成ルールに関する議論

序文MySQL インデックスの使用に関しては、これまでインデックスの最左接頭辞ルール、インデックス ...

nginxリバースプロキシのマルチポートマッピングの実装

コードの説明1.1 http:www.baidu.test.com のデフォルトは 80 で、リバー...

スマートCSSを使用して、ユーザーのスクロール位置に基づいてスタイルを適用します。

現在のスクロール オフセットを html 要素の属性に追加することで、現在のスクロール位置に基づいて...

WeChatアプレット開発の共通機能と使用方法のまとめ

ここでは、主に小さなプログラムの開発プロセスでよく使われる、非常に実用的な機能ポイントをいくつか整理...

ウェブデザインのためのロイヤルブルーのカラーマッチング入門

古典的な色の組み合わせは力と権威を伝え、強いロイヤルブルーはあらゆる古典的な色の組み合わせの中心的な...

SVNサービスバックアップ操作手順の共有

SVN サービスのバックアップ手順1. ソースサーバーとターゲットサーバーを準備するソースサーバー:...

ウェブサイトにダークモード切り替え機能を持たせるための純粋なCSSフリー実装コード

序文ダーク モードの概念は、 MacOS系統のMojaveに由来し、ユーザーが選択できる 2 つのス...

SQLのさまざまな結合サマリーの詳細な説明

SQL 左結合、右結合、内部結合、自然結合 さまざまな結合の概要SQL には、左結合、右結合、内部結...

JSscriptタグの属性は何ですか

JS スクリプト タグの属性は何ですか? charset : オプション。 src 属性で指定された...

Webリクエストと処理のTomcatソースコード分析

目次序文1. エンドポイント2. 接続ハンドラ3. コヨーテ4. コンテナ責任チェーンパターン序文T...