Vueドロップダウンメニューのコンポーネント開発の詳細説明

Vueドロップダウンメニューのコンポーネント開発の詳細説明

この記事の例では、Vueドロップダウンメニューのコンポーネント開発の具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

カスタムコンポーネントを作成します。非常にシンプルなドロップダウンメニュー、つまりアイデア全体です。

ステップ 1:プロジェクト内にカスタム コンポーネントを保存するためのフォルダーを作成します (コンポーネントの直下の common 内)

dropdown.vueは第一レベルのボックスです

dropdownMenu.vueはセカンダリボックスです

dropdownItem.vueはセカンダリボックスコンテンツです

ステップ2:

dropdown.vue の操作

<テンプレート>
  <div class="box">
     <!-- ボタンにクリック イベントを追加します -->
    <div @click="表示M">
          <!-- 第 1 レベルのボタン -->
      <スロット名="タイトル"></スロット>
    </div>
        <!-- セカンダリ ボックス -->
        
        <!-- 表示効果を非表示にするために v-if 操作を追加します -->
    <slot v-if="show" name="dropdown"></slot>
  </div>
</テンプレート>

<スクリプト>
  エクスポートデフォルト{
    名前:「ドロップダウン」、
    データ() {
      戻る {
        // デフォルトのセカンダリボックスは閉じられています show: false
      }
    },
    メソッド: {
      表示M() {
        this.show = !this.show
      },
      commitClick(値) {
      // ドロップダウン イベントを親に公開し、値を this.$emit('change-item',value) に渡します。
      }
    }
  }
</スクリプト>

<スタイルスコープ>
  。箱 {
    display: inline-block; /* インラインブロック */
    position: relative; /* 相対的な位置指定*/
    上:100ピクセル;
    左余白:100px
  }
</スタイル>

ドロップダウンメニューの場合は、ボックスとして扱います。スロットを追加してボックスを構築するだけです。

<テンプレート>
  <div class="ドロップダウンメニュー">
    <スロット></スロット>
  </div>
</テンプレート>

<スクリプト>
  エクスポートデフォルト{
    名前: "ドロップダウンメニュー"
  }
</スクリプト>

<スタイルスコープ>
  .ドロップダウンメニュー{
    padding: 8px 0; /* ボックスの内側の余白は上が 8px、左右が 0px です */
    border-radius: 4px; /* ボックスの角を丸くする*/
    border: 1px solid #f2f6fc; /* 境界線は 1px のグレーです*/
    position: absolute; /* 絶対位置指定*/
    right: 0; /* 右側 */
    top: 110%; /* ボックスはボタンの下にあります */
    background-color: #fff; /* 背景色は白です*/
    ボックスの影: 0 2px 4px rgba(0,0,0,0.12),0 0 6px rgba(0,0,0,.04);
    /* ボックスに影を追加します */
  }
</スタイル>

ドロップダウンアイテムの操作

<テンプレート>
  <div class="dropdown-item" @click="itemClick(値)">
    <スロット></スロット>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: "ドロップダウンアイテム",
  プロパティ:['値'],
  データ() {
    戻る {};
  },
  メソッド: {
    アイテムクリック(値) {
      // console.log(値)
      // 現在のコンポーネントの親の親、つまりドロップダウンの showM() メソッドを呼び出して、これを閉じます。this.$parent.$parent.showM();
      // 親の親 (ドロップダウン) の commitClick メソッドを呼び出し、値を渡します this.$parent.$parent.commitClick(value);
    },
  },
};
</スクリプト>

<スタイルスコープ>
 .ドロップダウン項目{
   line-height: 40px; /* 行の高さ 40px */
   white-space: nowrap; /* 改行なし*/
   padding: 0 20px; /* 内側の余白は上下が 0、左右が 20px です */
   color: #606266; /* フォントの色はグレーです*/
   カーソル: ポインター; /*マウスをクリックして移動します*/
 }
  .ドロップダウンアイテム:ホバー{
    color: #409eff; /* フォントの色は青です*/
    background-color: #ecf5ff; /* 背景色は明るい青にしてください*/
  }
</スタイル>

次にApp.vueファイルを操作します

<テンプレート>
  <div id="アプリ">
    <ドロップダウン @change-item="変更項目">
      <button slot="title">ボタン</button>
      <ドロップダウンメニュースロット="ドロップダウン">
        <dropdown-item value="食べ物">食べ物</dropdown-item>
        <dropdown-item value="ドリンク">ドリンク</dropdown-item>
        <dropdown-item value="再生">再生</dropdown-item>
      </ドロップダウンメニュー>
    </ドロップダウン>
  </div>
</テンプレート>

<スクリプト>
  './components/common/dropdown' からドロップダウンをインポートします
  「./components/common/dropdownMenu」からドロップダウンメニューをインポートします。
  「./components/common/dropdownItem」からdropdownItemをインポートします。
  エクスポートデフォルト{
    名前: 'アプリ'、
    コンポーネント:
      ドロップダウン、ドロップダウンメニュー、ドロップダウンアイテム
    },
    方法:{
      変更項目(e){
        コンソール.log(e)
      }

    }
  }
</スクリプト>

main.jsにコンポーネントをインポートする

「@/components/common/dropdown」からzgDropdownをインポートします。
「@/components/common/dropdownMenu」からzgDropdownMenuをインポートします。
「@/components/common/dropdownItem」からzgDropdownItemをインポートします。
Vue.component('zgDropdownItem',zgDropdownItem)
Vue.component('zgDropdown',zgDropdown)
Vue.component('zgDropdownMenu',zgDropdownMenu)

app.vueもそれに応じて変更する必要があります

<テンプレート>
  <div id="アプリ">
    <zg-dropdown @change-item="変更項目">
      <button slot="title">ボタン</button>
      <zg-dropdown-menu slot="ドロップダウン">
        <zg-dropdown-item value="食べ物">食べ物</zg-dropdown-item>
        <zg-dropdown-item value="ドリンク">ドリンク</zg-dropdown-item>
        <zg-dropdown-item value="再生">再生</zg-dropdown-item>
      </zg-ドロップダウンメニュー>
    </zg-dropdown>
  </div>
</テンプレート>

<スクリプト>
  エクスポートデフォルト{
    名前: 'アプリ'、
    方法:{
      変更項目(e){
        コンソール.log(e)
      }

    }
  }
</スクリプト>
<スタイルスコープ>

</スタイル>

大体こんな感じです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue ライフサイクルにおけるコンポーネント化をご存知ですか?
  • Vue コンポーネントの学習範囲を限定した詳細な説明
  • Vue コンポーネント開発に必須のスキル: コンポーネントの再帰
  • Vueコンポーネント化の基本的な使用方法の詳細
  • Vue コンポーネント化の一般的な方法: コンポーネント値の転送と通信
  • Vueのコンポーネント化を一緒に学びましょう

<<:  MySQL ログインおよび終了コマンドの形式

>>:  Zabbixを使用してMySQLを監視する方法

推薦する

スタートアップ企業が丹念に作り上げた優れたウェブデザイン17選

スタートアップ企業は、型破りな仕事のやり方、ユニークなビジネスモデル、特徴的な製品やサービス、パーソ...

Linux でのスケジュールされたタスクと遅延タスクの詳細な説明

で+ 時間 17:23に at> touch /mnt/file{1..9} ##アクションを...

CSS3 でテキストの点滅効果を実現する 3 つの方法 サンプルコード

1. 透明度を変更してテキストを徐々に点滅させると、次のような効果が得られます。 <!DOCT...

リンクをクリックしたときに表示される点線のボックスを削除するいくつかの方法

削除する方法はいくつかあります:リンクを直接追加するonfocus="this.blur(...

JavaScript で知らない Object.entries の使い方

目次序文1. 共通オブジェクトを反復処理するには for...of を使用します2. 通常のオブジェ...

MYSQLストアドプロシージャ、つまり一般的な論理知識のポイントの要約

MySQL ストアド プロシージャ1. ストアドプロシージャ構文(フォーマット)を作成する 区切り文...

Win10でIIS10を構成し、ASPプログラムのデバッグをサポートする手順

マイクロソフトIIS (Internet Information Server) は、Microso...

JSを段階的に学ぶ方法についての簡単な説明

目次概要1. jsの位置づけを明確に理解する2. 明確な学習パス3. 自己規律と粘り強さ4. 練習し...

MySQLはイベントを使用してスケジュールされたタスクを完了します

イベントでは、SQL コードを 1 回または一定の間隔で実行することを指定できます。通常、複雑な S...

Apache Superset を使用して ClickHouse データを視覚化する 2 つの方法

Apache Superset は、データを表示および探索する方法を提供する強力な BI ツールで...

DockerでRedisをデプロイして起動する方法

DockerでRedisをデプロイするまずLinuxにDockerをインストールし、次にDocker...

Centos7 インストール mysql5.6.29 シェル スクリプト

この記事では、参考までにmysql5.6.29のシェルスクリプトを共有します。具体的な内容は次のとお...

React+axios は github 検索ユーザー機能を実装します (サンプル コード)

負荷リクエスト成功リクエストに失敗しました cmdをクリックし、ファイルパスでEnterキーを押しま...

HTML における水平および垂直の中央揃え方法の詳細な説明 (基礎)

序文馬を書いていたとき、水平方向と垂直方向の中央揃えの方法について、誰もあまり知らなかったと思います...

HTML における要素の水平および垂直中央揃えに関する議論

ページをデザインするときには、ログイン ウィンドウを中央に配置するなど、DIV を中央に配置し、ペー...