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 コマンドの使用

推薦する

Tableとdivの簡単な紹介と使い方

ウェブフロントエンド1学生証名前性別年01張三男20 02李思女性21総人数60フォームのコンポーネ...

CentOS 7にDockerをインストールする

Linuxシステムをお持ちでない場合は、ダウンロードとインストールについてはhttps://www....

コードの互換性を高めるために、HTMLを次のように記述します。

たとえば、スクリーン リーダー ソフトウェアを必要とするユーザーなどです。フロントエンド開発者として...

Navicat Premier の MySQL へのリモート接続エラー 10038 の解決方法

MySQL へのリモート接続が失敗する場合は、次の理由が考えられます。 1. 若い男性/女性の方は、...

HTMLでマスクレイヤーを実装する方法 HTMLでマスクレイヤーを使用する方法

Web ページでマスク レイヤーを使用すると、繰り返しの操作を防ぎ、読み込みを促進できます。また、ポ...

MySQL Bツリーインデックスとインデックス最適化の概要についての簡単な説明

MySQL の MyISAM エンジンと InnoDB エンジンはどちらもデフォルトで B+ ツリー...

mysql 5.7.18 winx64 無料インストール設定方法

1. ダウンロード2. 減圧3. パス環境変数を追加し、mysqlが配置されているbinディレクトリ...

HTML テーブルレイアウト例の説明

HTML ドキュメント内の要素は次々に配置され、ブロックレベル要素の前後に改行が追加されるだけで、合...

HTML ページ内の js および css ファイルのキャッシュを自動的にクリーンアップします (バージョン番号を自動的に追加します)

Web プロジェクトの開発プロセスでは、CSS ファイルや JS ファイルを参照することがよくあり...

キャンバスでPS消しゴムスクラッチカードの効果を実現するためのJSの使用方法の詳細な説明

目次効果のデモンストレーション:メインJSコード実装 <div class="box...

Reactでのこのリファレンスの詳細な説明

目次原因:以下を実行します: 1. コンストラクター2.レンダリング機能3.bind関数とarrow...

Linux デスクトップ用の 4 つのスキャン ツール

ペーパーレスの世界はまだ到来していませんが、書類や写真をスキャンすることで紙をなくす人が増えています...

ディスク容量不足による MySQL レプリケーション障害の解決方法

目次ケースシナリオ問題を解決するまとめケースシナリオ本日、オンラインで問題が発見されました。監視範囲...

ethers.js を使用して Solidity スマート コントラクトをデプロイする方法

Ethereum 上で DApps を開発したことがある場合は、フロントエンド JavaScript...

CSS セレクタの 4 つのカテゴリ: 基本、組み合わせ、属性、疑似クラス

セレクターとは何ですか?セレクターの役割は、セレクターを介して要素を見つけ、CSS スタイルを要素に...