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 マスターとスレーブの不整合とその解決策の詳細な説明

推薦する

jQueryは画像の強調表示を実現します

ページ上の画像を強調表示することは非常に一般的です。ここでは、jQuery を使用して画像を強調表示...

Gitlab-ci を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル)

簡単に言うと、今日は Gitlab-CI を使用してリモート サーバーに自動的にデプロイする方法につ...

document.getElementBy系メソッドがオブジェクトを取得できない問題を解決する

getElementByIdはオブジェクトを取得できませんブラウザがドキュメントを解析するときにはシ...

Vue3 の ref と toRef の違いを簡単に分析します

1. refがコピーされ、ビューが更新されますrefを使用してオブジェクトのプロパティ値をレスポンシ...

純粋な CSS3 を使用して、円の動的な光る特殊効果アニメーションを実装するためのサンプル コード

この記事では、主に、円形のダイナミックな光る特殊効果アニメーションを実現するための純粋な CSS3 ...

MySQL 8.0 で列を素早く追加する方法

序文: MySQL 8.0 では高速な列追加がサポートされ、数秒で大きなテーブルにフィールドを追加で...

MYSQL 文字関数を使用してデータをフィルタリングすることに関する質問

問題の説明:構造:テストには2つのフィールドがあります。これらは col1 と col2 で、どちら...

MySQL 5.7.17 無料インストールバージョンの設定方法グラフィックチュートリアル (Windows10)

1. 概要ネットでいろいろ検索してみたところ、Linux システム向けではなく、現在の新しいバージ...

Win10にnginxをインストールする方法

会社から、負荷を実装するためにnginxをベースにFordプロジェクトのWebServiceサーバー...

MacにMySQLデータベースをインストールする方法を教えます

Mac 用 MySQL をダウンロード: https://downloads.mysql.com/a...

.NETCore Dockerはコンテナ化とプライベートイメージリポジトリ管理を実装します

1. Dockerの紹介Docker は Linux オペレーティングシステムの一部の機能をベースに...

MySQL で日付時刻データを取得し、その後に .0 を追加する方法

MySQL のデータ型は datetime です。データベースに保存されているデータは 2015-0...

Vuex のコアコンセプトと基本的な使用法の詳細な説明

目次導入始めるインストール①直接ダウンロードする方法②CND法③NPM方式④糸法NPMインストールの...

Vue プロジェクト @change 複数のパラメータを使用して複数のイベントを渡す

まず、変更イベントは 1 つだけです。 changelevel() //値を選択選択を変更して行の値...

MySQLで行を列に変換する方法

MySQL の行から列への操作いわゆる行から列への操作は、テーブルの行情報を列情報に変換することです...