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

推薦する

show processlist コマンドによる MySQL パフォーマンス検査の説明

show processlist コマンドは非常に便利です。MySQL の実行が 50% 以上になる...

Ubuntu Server 16.04 MySQL 8.0 のインストールと設定のグラフィックチュートリアル

Ubuntu Server 16.04 MySQL 8.0 のインストールと設定のグラフィックチュー...

MySQL InnoDB のトランザクション特性を確保するにはどうすればよいですか?

序文「データベース トランザクションの特徴は何ですか?」と尋ねられたら、 ACID 特性である原子性...

CentOS 6.4 MySQL 5.7.18 のインストールと設定方法のグラフィックチュートリアル

Centos6.4 で mysql5.7.18 をインストールするための具体的な手順が全員に共有され...

ニューススタイルのウェブサイトデザイン例25選

bmi ボイジャーピッチフォークアルスター食料品店チャウ真/斜めポスタこれは偽のDIYですクリエイテ...

WeChat アプレット開発フォーム検証 WxValidate の使用

個人的には、WeChat アプレットの開発フレームワークは VUE と概ね似ていると感じていますが、...

Nginxを使用してストリーミングメディアサーバーを構築し、ライブブロードキャスト機能を実現する

前面に書かれた近年、ライブストリーミング業界は非常に人気が高まっています。伝統的な業界でのライブスト...

Reactは複雑な検索フォームの展開と折りたたみ機能を実装します

時間に余裕を持って、過去を忘れましょう。前のセクションでは、[検索] フォームとクエリおよびリセット...

MySQLスローログに関する知識のまとめ

目次1. スローログの紹介2. スローログの練習1. スローログの紹介スロー ログの正式名称はスロー...

SQL インジェクションの詳細

1. SQL インジェクションとは何ですか? SQL インジェクションは、入力パラメータに SQL ...

Tomcat が設定ファイルを外部に配置するためのソリューション

質問通常の開発では、プロジェクトを Tomcat にデプロイする場合、プロジェクトを war パッケ...

VMWare14.0.0のUbuntu仮想マシンで共有フォルダを設定する

これは私の最初のブログ投稿です。時間の制約があるため、どのようにフォーマットすればよいかわかりません...

純粋なHTML+CSSでタイピング効果を実現

この記事は主に、一定の参考値を持つ純粋な HTML + CSS によって実現されるタイピング効果を紹...

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

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