JavaScript でタブバーの切り替え効果を実装する

JavaScript でタブバーの切り替え効果を実装する

フロントエンド開発者が必ず知っておくべきケースとして、タブバーの切り替え効果があります。タブバー自体がクリックによって切り替えられるだけでなく、タブ自体がその下のコンテンツセクションの表示も決定します。

操作効果表示:

上の図に示すように、実際には、上のタブ バーをクリックするだけで、タブ バー自体のスタイルが変更され、その下のコンテンツ ブロックにも対応するコンテンツが表示されます。このような効果や機能はフロントエンドで広く利用されているため、フロントエンドには必須のものだと言えます。では、早速コードを紹介します。

(ここでは CSS スタイル コードを投稿しません。必要に応じて設定し、フロート レイアウトを使用してください)

HTML の構造:

<div class="tab">
        <div class="tab_list">
            <ul>
                <li class="current">製品紹介</li><!-- 最初の li はデフォルトで選択されており、current は赤い背景と白いテキストのスタイルを決定します -->
                <li>仕様とパッケージ</li>
                <li>アフターセールス保証</li>
                <li>製品レビュー (50,000)</li>
                <li>モバイル コミュニティ</li>
            </ul>
        </div>
        <div class="tab_con">
            <div class="item" style="display: block;"><!-- すべてのアイテムの表示値が none であるため、このアイテムはデフォルトで表示されます -->
                製品紹介モジュールコンテンツ</div>
            <div class="item">
                仕様とパッケージモジュールの内容</div>
            <div class="item">
                アフター保証モジュールコンテンツ</div>
            <div class="item">
                製品レビュー(50000)モジュールコンテンツ</div>
            <div class="item">
                モバイル コミュニティ モジュール コンテンツ</div>
 
        </div>
</div>

JS コードは次のとおりです。

<スクリプト>
        // ビジネス要件: タブ バーをクリックします。クリックされたタブ バーはスタイルが異なり、コンテンツを変更する効果を実現するには、その下の div も切り替える必要があります。var tab_list = document.querySelector('.tab_list');
        var lis = tab_list.querySelectorAll('li');
        var タブ = document.querySelectorAll('.item');
        (var i = 0; i < lis.length; i++) の場合 {
            lis[i].setAttribute('data-index', i); // 各 li に data-index カスタム属性を追加します。値は lis 内の独自の添え字です。この値により、現在クリックしている li を判別し、後で対応する div の表示値を変更するのに役立ちます。lis[i].onclick = function () {
                // 1. 最初のステップは、排他的なアイデアを使用して、クリックしたユーザーにクラス属性を割り当てることです。クリックされていない他の項目のクラス値は空のままにしておく必要があることに注意してください。これは、他の人を殺して自分だけを残すという排他的なアイデアです for (var i = 0; i <lis.length; i++) {
                    lis[i].className = ''; // ループを使用して全員(自分自身を含む)のクラス名を空にします}
                // 次に、クラス名を自分用に修正して、自分に任せます this.className = 'current'; // 現在のクラス名の CSS スタイルが記述されています // 次に、上記のタブ バー スタイルを処理する必要があります。 2 番目のステップは、クリックされたものに対応する従属 div を表示し、クリックされていない他の div を非表示にすることです。 ここでは、主に、まずユーザーがクリックしたものを把握し、次にオブジェクト div の表示をブロックするように設定する必要があります。それを実行するには、まだ排他的な思考を使用する必要があります // ステップ 2: クリックに応じて div の表示属性値を変更します var index = this.getAttribute('index'); // 現在クリックされている li のインデックスを取得します
                for (var i = 0; i < lis.length; i++) { // ループを使用して各項目の表示をnoneに設定し、すべての項目を終了します。tabs[i].style.display = 'none';
                }
                // タブで、li のインデックスに対応する項目をロックし、その表示値をブロックに変更して、私だけを残します。tabs[index].style.display = 'block';
            }
        }
</スクリプト>

実装の手順とアイデアはあります(JSコードで詳細な分析が行われています)。最初に、LIタグのスタイルが変更されますsはテキストのコンテンツを保持するために配置されますが、divのテキストがLIタグで変更されることを認識しますインデックスの値、ユーザーがクリックしたLIを知ることができるので、表示するDivを決定できます。 (理解を深めるために、コードを読んでコメントと組み合わせることをお勧めします)

注:ここで「排他的なアイデア」についてお話しします。つまり、リストやテーブルなどの要素オブジェクトは、一般的に均一に取得され、配列に格納されます。現在選択されている要素と他の選択されていない要素との「違い」を制御したい場合、多くの場合、「排他的なアイデア」を設計します。これは主に 2 つのステップで実装されます。1. ループを使用して、これらすべての要素 (選択された要素を含む) をトラバースします。このステップの主な目的は、すべての要素を「同じ」にして、違いがないようにしてから、選択した要素 (つまり、自分自身を残す) に必要なスタイルや機能を追加することです。これら 2 つのステップを組み合わせることで、選択された人を「異なる」ものにする効果が得られます。

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

以下もご興味があるかもしれません:
  • シンプルなタブバー切り替えケースを実現するJavaScript
  • シンプルなタブバー切り替えコンテンツバーを実装するJavaScript
  • JavaScript TABバー切り替え効果の例
  • タブバーの切り替え効果を実現する js
  • タブバーの切り替え効果を実現する JavaScript
  • js タブバー切り替えコード例の分析
  • タブバーの切り替え効果を実現するJavaScript

<<:  Linux CentOS 6.5 のアンインストール、tar、および MySQL のインストールチュートリアル

>>:  MySQL マスターとスレーブの不整合とその解決策の詳細な説明

推薦する

Linux/CentOS システムでネットワーク時間を同期する 2 つの方法の詳細な説明

ハードウェア上の理由により、機械は標準時間にある程度追いつけない場合があり、その誤差は 1 か月で数...

HTML テーブル マークアップ チュートリアル (16): タイトルの水平方向の配置属性 ALIGN

デフォルトでは、表のタイトルは水平方向に中央揃えされます。ALIGN 属性を使用して、タイトル テキ...

負荷分散と動的および静的分離操作を実現するDocker NginxコンテナとTomcatコンテナ

Tomcat8 イメージをダウンロード [root@localhost ~]# docker sea...

CentOS 7.2 は uniapp プロジェクトを展開するための nginx Web サーバーを構築します

Pantherは新人としてスタートし、今もまだ新人ですが、人々から学び、学んだことを時々皆さんと共有...

CentOS 7.6 仮想ネットワーク カードのバッチ追加、変更、削除操作の紹介

1 カーネルにtunモジュールがあるかどうかを確認する modinfo tun modprobe t...

Nginx の一般的な設定とテクニックの概要

序文この記事では、Nginx の一般的な、実用的で興味深い構成をいくつか紹介します。この記事を読んだ...

ベンダー プレフィックス: ブラウザ エンジン プレフィックスが必要なのはなぜですか?

ベンダープレフィックスとは何ですか?ベンダー プレフィックス - ブラウザー エンジン プレフィック...

クラウドネイティブテクノロジー Kubernetes (K8S) の紹介

目次01 Kubernetes とは何ですか? 02 KubernetesとCompost+Swar...

MySQL のスローログ監視の誤報問題の分析と解決

以前は、さまざまな理由により、一部のアラームは真剣に受け止められませんでした。最近、休暇中に、すぐに...

Oracle と MySQL の高可用性ソリューションの比較分析

Oracle と MySQL の高可用性ソリューションについては、以前からまとめたいと思っていたので...

JavaScript イベント委任 (プロキシ) の使用例の詳細

目次導入例: イベントの委任記述方法1: イベント委譲書き方2: 各子要素がイベントをバインドする例...

MySQL レプリケーションの原理と実際のアプリケーションの詳細な説明

この記事では、例を使用して、MySQL レプリケーションの原理と実際のアプリケーションについて説明し...

MySQL ユーザー権限管理の分析例

この記事では、MySQL ユーザー権限管理の例について説明します。ご参考までに、詳細は以下の通りです...

MySQL の NULL と空の文字列

最近、MySQL に触れました。昨日、テーブル構造情報を格納するための新しいテーブルを作成しました。...

CUDA8.0とCUDA9.0はUbuntu16.04で共存します

序文Github にある以前のコードには、CUDA 8.0 環境が必要なものもあります。初心者の場合...