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

推薦する

表のセルの内容が超過した場合に省略記号効果を表示する(実装コード)

例示するフロントエンド開発では、セルの幅を制限し、コンテンツが制限を超える部分に省略記号を表示する必...

DIV、テーブル、XHTML のウェブサイト構築の違いの分析と説明

簡単に言えば、ウェブサイト構築とは、「この人はどんな外見をしているのか」と「この人はどんな内面を持っ...

Windows 10 に MySQL 8.0.19 を zip 形式でインストールする詳細なチュートリアル

目次1.ダウンロード後、インストールしたいディレクトリに解凍します。 2. インストールディレクトリ...

Node の SMS API で検証コード ログインを実装するためのサンプル コード

1. ノードサーバーのセットアップ + データベース接続ここでの操作は比較的簡単でわかりやすいです。...

JS初心者が配列を処理するための実践的な方法のまとめ

join() メソッド: 指定された区切り文字を使用して配列内のすべての要素を文字列に接続します。例...

VirtualBox CentOS7.7.1908 Python3.8 ビルド Scrapy 開発環境 [グラフィックチュートリアル]

目次環境CentOSをインストールするyum 国内ミラーソースを構成するサードパーティの依存関係をイ...

更新SQL文に基づくMySQLロックの理解

序文MySQL データベース ロックは、データの一貫性を実現し、同時実行性の問題を解決するための重要...

Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...

JS Canvas インターフェースとアニメーション効果

目次概要Canvas API: グラフィックスの描画パス線種矩形アーク文章グラデーションと画像の塗り...

LNMP と phpMyAdmin を Docker にデプロイする方法

環境準備:複数のコンテナに基づいてホストに lnmp をデプロイします。 nginx サービス: 1...

MySQL 5.7.9 シャットダウン構文例の詳細な説明

mysql-5.7.9 では、ついにシャットダウン構文が提供されます。以前は、MySQL データベー...

onfocus="this.blur()" は視覚障害のあるウェブマスターに嫌われている

スクリーン リーダー ソフトウェアの操作ページについて話しているとき、彼はフロントエンドの学生たちに...

マウスを動かしたときにセカンダリメニューバーを実装するために HTML+CSS を使用する例

この記事では、マウスを動かしたときにセカンダリ メニュー バーを実装するために HTML+CSS を...

MySql における無効な Null セグメント判定と IFNULL() 失敗の解決策

MySql Nullフィールド判定とIFNULL失敗処理ps: (プロセスを表示したくない場合は、S...

JavaScriptは両端キューを実装する

この記事の例では、両端キューを実装するためのJavaScriptの具体的なコードを参考までに共有して...