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デーモンの起動に失敗したエラーの解決方法

推薦する

nginx の 2 つのモジュールの proxy_pass の違い

1. 1.ngx_stream_proxy_moduleモジュールのproxy_passディレクティ...

HTML/CSS での空白処理とページ内の空白を保持する方法

HTML の空白ルールHTML では、コンテンツ内の複数のスペースは通常 1 つとみなされ、連続する...

ウェブページのカラーマッチング例分析: 緑色のカラーマッチングウェブページ分析

<br />緑は黄色と青(寒色と暖色)の中間の色で、より穏やかな色です。そのため、緑は最...

MySQL インデックス プッシュダウンを 5 分で理解する

目次インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックスプッ...

MySQLは既存のコンテンツを保持し、後でコンテンツを追加します

このコマンドは、データ テーブル ff_vod を変更し、vod_url フィールドの内容の後に 9...

Vue 円形パーセンテージ プログレスバー コンポーネントの機能の実装

必要な方はどなたでも参考にしてください。試してみて問題が見つかった場合は、メッセージを残してお知らせ...

jQuery ベースのカレンダー効果

この記事では、カレンダー効果を実現するためのjQueryの具体的なコードを例として紹介します。具体的...

JSアルバム画像の揺れと拡大表示効果のサンプルコード

前回の記事では、JS を使って簡単な揺れ効果を実現する方法を紹介しました。ご興味があればクリックして...

MySQLはランダムに一定数のレコードを抽出します

以前は、このような使用シナリオを処理するために rand() で直接 order していましたが、効...

MySQL 5.0.96 for Windows x86 32 ビット グリーン簡易版インストール チュートリアル

MySQL 5.0 は、いくつかの「高度な機能」があるため定番となっています。これは、Windows...

Vue グローバルメソッドを設定する 2 つの方法

目次1. はじめに2. 最初の方法3. 2番目の方法要約する1. はじめにVue プロジェクトの開発...

携帯電話に GreasyFork js スクリプトをインストールするチュートリアル

目次序文1. Iceraven ブラウザ (Firefox) (Android) 2. (アンドロイ...

LinuxテキストエディタVimの詳しい説明

Vim は強力なフルスクリーン テキスト エディターであり、Linux/UNIX で最も一般的に使用...

vscodeでnpmを使用してbabelをインストールする方法

序文前回の記事ではNode.jsのインストールと設定を紹介しました。今回はVScodeでbableを...

MySQL 8.0.15 のダウンロードとインストールの詳細なチュートリアルは初心者にとって必須です。

この記事では、MySQL 8.0.15をダウンロードしてインストールするための具体的な手順を参考まで...