問題の説明開発ではタブ切り替えシナリオがよく使用されます。この効果を達成する必要がある場合、私たちはこの効果を達成するために次のような方法を考えることが多いです。
作者は、タブ切り替え効果を実現するには、vue の動的コンポーネントを使用する方が便利だと考えています。 Vueの動的コンポーネントとはVue の動的コンポーネントは、本質的には依然としてコンポーネントです。簡単に言えば、コンポーネントは js ロジックを備えた UI ビュー レイヤーです。いわゆる動的コンポーネントとは、ページ上の特定の場所に表示される特定のコンポーネントを、いくつかの条件に応じて動的に制御できることを意味します。これはタブを切り替えるような感じですね。 アプリケーションシナリオの説明需要効果図 実際には、非常にシンプルで、タブを切り替える効果だけです。 もちろん、実際の開発では、タブのスタイル効果はもう少し複雑になる可能性があります。 実装手順ステップ 1 (新しいコンポーネントを作成し、登録を導入する)まず、タブ切り替えで表示されるコンテンツ部分として、componentsフォルダ内の4つの.vueファイルを定義し、インポートすることで利用できるようになります。 新しい インポートと登録 「./components/one」から1つをインポートします。 「./components/two」から2つをインポートします。 「./components/three」から3つをインポートします。 「./components/four」から 4 をインポートします。 コンポーネント: 1つ、 二、 三つ、 4、 }, ステップ 2 (レイアウト、タブのクリック ラベルを上部に配置し、対応するコンテンツを表示するコンポーネントを下に配置する)<テンプレート> <div id="アプリ"> <div class="top"> <!-- タブのクリック ラベルを配置します --> </div> <div class="bottom"> <!-- 対応するコンテンツを表示するために動的コンポーネントを配置します--> </div> </div> </テンプレート> ステップ 3 (上のタブを記入し、ラベルをクリックします)// まず、クリックされたタブのデータを格納するために、data に配列 cardArr を定義します。data() { 戻る { インデックス: 0, カードArr: [ { コンポーネント名: "動的コンポーネント 1", }, { コンポーネント名: "動的コンポーネント 2", }, { コンポーネント名: "動的コンポーネント 3", }, { コンポーネント名: "ダイナミックコンポーネント4", }, ]、 }; }, // 次に、v-for ループを使用して <template> を表示します。 <div id="アプリ"> <div class="top"> <div クラス="crad" :class="{highLight: whichIndex == index }" v-for="(アイテム、インデックス) in cardArr" :key="インデックス" @click="whichIndex = インデックス" > {{ item.componentName }} </div> </div> <div class="bottom"> <!-- 動的コンポーネントを配置します... --> </div> </div> </テンプレート> // ハイライトされた状態が必要なので、最初にハイライトされるインデックス0を設定します。これは、データで定義されたwhichIndexと:classを使用して実現します。 // ハイライトスタイル.highLight { ボックスの影: 0 15px 30px rgba(0, 0, 0, 0.2); 変換: translate3d(0, -1px, 0); } ステップ4 (動的コンポーネントタグ<component/>を使用する)// 動的コンポーネント タグ <component/> には is 属性があります。is の値によってコンポーネントの値が決まります。 // ここでは変数componentIdを使用して保存し、componentIdを<div class="bottom">として表示します。 <コンポーネント:is="コンポーネントID"></コンポーネント> </div> // デフォルトでは、最初のものを最初に表示します。同時に、cardList 内のコンポーネント名とコンポーネント ID を互いに対応させる必要があります。 // データは次のように変更する必要があります data() { 戻る { インデックス: 0, componentId: "one", // 値は、コンポーネントオブジェクトに登録したインポートされたコンポーネントの名前です。cardArr: [ { コンポーネント名: "動的コンポーネント 1", componentId: "one", // 対応する}, { コンポーネント名: "動的コンポーネント 2", componentId: "two", // 対応する}, { コンポーネント名: "動的コンポーネント 3", componentId: "three", // それに対応する}, { コンポーネント名: "ダイナミックコンポーネント4", componentId: "four", // それに対応する}, ]、 }; }, ステップ 5 (タブ コンポーネントをクリックして、対応する componentId 値を動的に変更します)<テンプレート> <div id="アプリ"> <div class="top"> <div クラス="crad" :class="{highLight: whichIndex == index }" v-for="(アイテム、インデックス) in cardArr" :key="インデックス" @クリック=" whichIndex = インデックス; コンポーネントID = アイテム.コンポーネントID; 「 > <!-- @click タグ内にセミコロンで区切って複数の操作コードを記述できます --> {{ item.componentName }} </div> </div> <div class="bottom"> <!-- キャッシュ コンポーネントをキープアライブ状態に維持します。これにより、コンポーネントが破棄されず、DOM が再レンダリングされなくなります。 ブラウザはリフローや再描画を行わないため、パフォーマンスを最適化できます。使用しない場合は、ページの読み込みが遅くなります。 <キープアライブ> <コンポーネント:is="コンポーネントID"></コンポーネント> </キープアライブ> </div> </div> </テンプレート> 完全なコードは添付されています<テンプレート> <div id="アプリ"> <div class="top"> <div クラス="crad" :class="{highLight: whichIndex == index }" v-for="(アイテム、インデックス) in cardArr" :key="インデックス" @クリック=" whichIndex = インデックス; コンポーネントID = アイテム.コンポーネントID; 「 > {{ item.componentName }} </div> </div> <div class="bottom"> <キープアライブ> <コンポーネント:is="コンポーネントID"></コンポーネント> </キープアライブ> </div> </div> </テンプレート> <スクリプト> 「./components/one」から1つをインポートします。 「./components/two」から2つをインポートします。 「./components/three」から3つをインポートします。 「./components/four」から 4 をインポートします。 エクスポートデフォルト{ コンポーネント: 1つ、 二、 三つ、 4、 }, データ() { 戻る { インデックス: 0, コンポーネントID: "1", カードArr: [ { コンポーネント名: "動的コンポーネント 1", コンポーネントID: "1", }, { コンポーネント名: "動的コンポーネント 2", コンポーネントID: "2", }, { コンポーネント名: "動的コンポーネント 3", コンポーネントID: "3", }, { コンポーネント名: "ダイナミックコンポーネント4", コンポーネントID: "4", }, ]、 }; }, }; </スクリプト> <style lang="less" スコープ> #アプリ { 幅: 100%; 高さ:100vh; ボックスのサイズ: 境界線ボックス; パディング: 50px; .トップ{ 幅: 100%; 高さ: 80px; ディスプレイ: フレックス; コンテンツの両端揃え: スペースを空ける; .crad { 幅: 20%; 高さ: 80px; 行の高さ: 80px; テキスト配置: 中央; 背景色: #fff; 境界線: 1px 実線 #e9e9e9; } .ハイライト{ ボックスの影: 0 15px 30px rgba(0, 0, 0, 0.2); 変換: translate3d(0, -1px, 0); } } 。底 { 上マージン: 20px; 幅: 100%; 高さ: calc(100% - 100px); 境界線: 3px ピンク ディスプレイ: フレックス; コンテンツの中央揃え: 中央; アイテムの位置を中央揃えにします。 } } </スタイル> 上記は、Vue が動的コンポーネントを使用して TAB 切り替え効果を実現する方法の詳細です。Vue が動的コンポーネントを使用して TAB 切り替え効果を実現する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: MySQLデータベースの管理者パスワードを忘れた場合の解決策
>>: Linux ネットワークプログラミングにおけるソケットオプションの実装
Docker コンテナが終了しても、デバッグを容易にし、ユーザー データを保持するために、デフォルト...
序文日常生活で使用する論理的判断文には、if...else...、switch...case...、...
Vue での img の動的スプライシングを見てみましょう。src 画像アドレス、具体的な内容は次の...
データボリュームの使用開始先ほどのケースでは、ホストからコンテナにデータをコピーする必要がある場合、...
1. 足場とは何ですか? 1. Vue CLI Vue CLI は、Vue.js をベースにした迅速...
序文プロジェクトでは中間層としてNodeを使用し、Nodeのデプロイにはdockerを使用します。こ...
概要通常、データベース内のデータを直接表示することは望ましくないため、最後の 2 つのセクションでは...
目次1. MySQLでよく使われる文字列関数2. 数値関数3. 日付と時刻の機能4. プロセス機能5...
導入MySQL データベースを使用する場合、int を主キーとして使用し、自動インクリメントに設定す...
目次1. a タグを使用して PDF をプレビューまたはダウンロードします。書き方は、携帯電話でクリ...
1. ファイル名検索を実行するwhich ('実行可能ファイル' を検索) //PA...
Vim は強力なフルスクリーン テキスト エディターであり、Linux/UNIX で最も一般的に使用...
コードは次のようになります。 // 配送先住所の平行四辺形の線のスタイル <view clas...
この記事では、参考までにMySQL 8.0.15のインストールと設定のグラフィックチュートリアルを紹...
Centos7.6 に Tomcat-8.5.39 をインストールする方法は次のとおりです。詳細は次...