問題の説明開発ではタブ切り替えシナリオがよく使用されます。この効果を達成する必要がある場合、私たちはこの効果を達成するために次のような方法を考えることが多いです。
作者は、タブ切り替え効果を実現するには、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 ネットワークプログラミングにおけるソケットオプションの実装
目次エラーのデモンストレーション計算により画像が変わらない場合は直接インポートするCSS変数による画...
序文Tomcat は、無数のチューニング オプションを備えた、広く使用されている Java Web ...
最近レスポンシブ デザインについて学んでいて、これについていくつか整理してみました。写真の一部はイン...
まず、私たちがやりたいことは、serverA の usera を使用して、パスワードなしで serv...
Vue のトランジションは、アニメーション トランジションをカプセル化するコンポーネントです。一般...
前回の記事 https://www.jb51.net/article/154157.htm では、B...
目次序文1. 概要2. 読み取りと書き込みの分離3. MySQL マスタースレーブレプリケーションの...
この記事では、書籍管理を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は次の...
jQuery フォーム検証の例 / ユーザー名、パスワード、住所、電子メールの検証を含む下記の通り ...
JSON (JavaScript Object Notation、JS Object Notatio...
1. mysql-8.0.15をダウンロード、インストール、設定する1. 公式サイト (https:...
CentOS プロジェクトは、Red Hat の再配布要件に完全に準拠した、Red Hat Ente...
プロジェクトで使用されている特殊文字とアイコンHTMLコードXML/HTML コードコンテンツをクリ...
W3C は HTML の標準をいくつか確立していますが、ブラウザは独自の定義済みスタイルに従って W...
目次ユニオンクエリ1. 中国の各省のIDと名前を照会する2. 湖南省のすべての地級市のIDと名称3....