Vue の 2 択タブバー切り替えの新しいアプローチ

Vue の 2 択タブバー切り替えの新しいアプローチ

問題の説明

プロジェクトに取り組んでいるときに、タブ バーの切り替え効果を作成する必要がある場合があります。タブが 2 つあるものもあれば、3 つあるもの、さらには 5 つ、6 つ、7 つ、8 つあるものもあります。通常は、Ele.me のタブ コンポーネントを使用するだけですが、時間があるときには、2 つのタブを切り替える、つまり 2 つの選択肢の効果を実現するタブ コンポーネントを作成することもあります。雑談はここまでにして、ダイナミックレンダリングを見てみましょう

このケースは2つのタブに適しています(3つのタブも私のように記述できます。4つまたは5つのタブがある場合は、Ele.meコンポーネントを使用する方が高速です)

コードは次のとおりです

HTML部分

<テンプレート>
 <div id="アプリ">
  <div class="tabWrap">
   <!-- この構造はタブナビゲーションであり、対応するクリックイベントがこれにバインドされています。クリックイベントのコールバックでは、対応するコンテンツの表示と非表示、スタイルの変更、つまりタブの切り替えが制御されます-->
   <div class="tabNav">
    <div class="navOne" @click="tabOne">タブ1</div>
    <div class="navTwo" @click="tabTwo">タブ2</div>
   </div>
   <!-- この構造はタブナビゲーションに対応するコンテンツです-->
   <div class="tabContent">
    <!-- v-show を使用して非表示を制御し、1 つを非表示にして 1 つを同時に表示することで、タブ バーの切り替え効果が得られます -->
    <div class="navOneBox" v-show="showTabOne">切り替え中 1</div>
    <div class="navTwoBox" v-show="showTabTwo">私はtab2です</div>
   </div>
  </div>
 </div>
</テンプレート>

js部分

<スクリプト>
エクスポートデフォルト{
 名前:「アプリ」、
 データ() {
  戻る {
   showTabOne: true, // 切り替える 2 つのタブのうち 1 つを選択します。 showTabTwo: false, // 切り替える 2 つのタブのうち 1 つを選択します。 };
 },
 メソッド: {
  // 2つのタブバースイッチのうち1つを選択します tabOne() {
   /*
    tab1をクリックすると、tab1が表示され、tab2が非表示になります。つまり、showTabOneはtrue、showTabTwoはfalseです。
    同時に、tab1 のスタイルを「強調表示」するように変更し、tab2 のスタイルを「強調表示解除」するように変更することを忘れないように注意してください。
    tab2 をクリックした場合も同様です。
   */
   タブのタイトルを true に設定します。
   this.showTabTwo = false;
   document.querySelector(".navOne").style.backgroundColor = "#fff";
   document.querySelector(".navTwo").style.backgroundColor = "#e3e3e3";
   document.querySelector(".navOne").style.color = "#3985EC";
   document.querySelector(".navTwo").style.color = "#80868D";
  },
  // 2つのタブバーの切り替えのいずれかを選択します tabTwo() {
   this.showTabTwo = true;
   this.showTabOne = false;
   document.querySelector(".navOne").style.backgroundColor = "#e3e3e3";
   document.querySelector(".navTwo").style.backgroundColor = "#fff";
   document.querySelector(".navTwo").style.color = "#3985EC";
   document.querySelector(".navOne").style.color = "#80868D";
  },
 },
};
</スクリプト>

CSS部分

<スタイル lang="less">
.tabNav {
 幅: 126ピクセル;
 高さ: 30px;
 境界線の半径: 2px;
 背景色: #e3e3e3;
 ディスプレイ: フレックス;
 アイテムの位置を中央揃えにします。
 コンテンツの均等配置: スペースを均等に;
 .navOne{
  幅: 60ピクセル;
  高さ: 26px;
  境界線の半径: 2px;
  背景色: #fff;
  色: #3985ec;
  フォントサイズ: 14px;
  フォントの太さ: 500;
  ディスプレイ: フレックス;
  コンテンツの中央揃え: 中央;
  アイテムの位置を中央揃えにします。
  カーソル: ポインタ;
 }
 .navTwo {
  幅: 60ピクセル;
  高さ: 26px;
  色: #80868d;
  境界線の半径: 2px;
  フォントサイズ: 14px;
  フォントの太さ: 500;
  ディスプレイ: フレックス;
  コンテンツの中央揃え: 中央;
  アイテムの位置を中央揃えにします。
  カーソル: ポインタ;
 }
}
.tabコンテンツ{
 上マージン: 8px;
 .navOneBox {
  背景色: #bfa;
 }
 .navTwoBox {
  背景色: #baf;
 }
}
</スタイル>

Vue の 2 択タブバー切り替えの新しい実装に関するこの記事はこれで終わりです。Vue タブバー切り替えに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueはタブバーのクリックのハイライト効果を実現します
  • Vueをベースにタブバーのコンテンツを切り替えたり、データをリアルタイムに更新する機能を実現

<<:  proxy_pass がパス パスに従って転送する場合の "/" 問題の詳細な説明

>>:  MySQLデーモンの起動に失敗したエラーの解決方法

推薦する

MySQL での数値のフォーマットの詳細な説明

最近、仕事の都合で、MySQL で数字をフォーマットする必要がありましたが、インターネット上にはほと...

Kylin 4.0.2 (Ubuntu) でブート パーティションを拡張するプロセスの紹介

目次序文1. 新しいパーティションを準備する2. ブートパーティションをコピーする3. fstabフ...

JavaScript BOM の説明

目次1. BOMの紹介1. JavaScriptは3つの部分から構成される2.ウィンドウオブジェクト...

Tomcat と WebLogic で純粋な HTML ファイルを展開するプロセスの分析

1. まず、純粋なHTMLファイルにはindex.htmlというエントリが必要です。 2. Tomc...

Mysql の主キー インデックスと非主キー インデックスの違いについて簡単に説明します。

目次インデックスとは何か主キーインデックスと通常のインデックスの違いインデックスにはどのデータ構造が...

Vue で手ぶれ補正とスロットリングを使用する方法

目次序文コンセプト安定意味使用シナリオコードVueでの使用スロットリング意味使用シナリオコードVue...

MySQL の lru リンク リストの簡単な分析

1. 従来のLRUリンクリストについて簡単に説明するLRU:最も最近使われなかったものLRU リンク...

MySQL 上級学習ノート (パート 3): MySQL 論理アーキテクチャの紹介、MySQL ストレージ エンジンの詳細な説明

MySQL 論理アーキテクチャの概要他のデータベースと比較すると、MySQL は、そのアーキテクチャ...

HTMLからReactを実装する方法を教えます

ReactとはReact は、効率的で高速なユーザー インターフェイスを構築するためのシンプルな J...

MySQL の pid とソケットの詳細な説明

目次1. pidファイルの紹介2.ソケットファイルの紹介要約:ソケット ファイル: Unix ドメイ...

チャットバブル効果を実現するCSS

1. レンダリングJD効果シミュレーション効果 2. 原則高さと幅が0のボックスを用意しますこのボ...

MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...

Vue プロジェクトがページング効果を実現

ページング効果は、参考までにvueプロジェクトに実装されています。具体的な内容は次のとおりです。 1...

20個のJavaScriptワンラインコードを共有する

目次1. ブラウザのクッキーの値を取得する2. RGBを16進数に変換する3. クリップボードにコピ...

HTML入力で値が変更されたときにリスナーイベントを追加することの簡単な分析

達成される効果多くの場合、入力ボックスの値の変化をリアルタイムで監視し、ブラウザを誘導してウェブサイ...