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を監視する方法

推薦する

テキストの両側に水平線を描くための CSS のサンプルコード

この記事では、テキスト中央の両側に水平線を引く効果を実現する CSS のサンプルコードを紹介し、皆さ...

MySql データベースにおける単一テーブル クエリと複数テーブル結合クエリの効率の比較

この間、プロジェクトに取り組んでいるときに、データ間の接続が非常に複雑なモジュールに遭遇しました。テ...

MySQL で SQL 文の実行時間を表示する方法

目次1. 初期SQLの準備2.MysqlはSQL文の実行時間をチェックします3. さまざまなクエリの...

vue3.0+vant3.0の迅速なプロジェクト構築の実装

目次1. プロジェクトの構築2. Vue3 体験 + Vant 紹介2020年9月18日にvue.j...

CentOS 起動時にカーネルモジュール overlayfs 操作を自動的にロードする

CentOS でカーネル モジュールを自動的にロードするには、/etc/sysconfig/modu...

LinuxにKafkaをインストールする

目次1.1 前提条件としてのJava環境1.2 Zookeeperのインストールと設定1.3 Kaf...

Mac で Docker を使用して Oracle をデプロイする方法

Mac で Docker を使用して Oracle をデプロイする方法まずdockerをインストール...

WeChat アプレット wxs 日付と時刻処理の実装例

目次1. 日付までのタイムスタンプ2. UTCを北京時間に変換するWXS (WeiXin Scrip...

MySQLクエリトランザクション処理へのノード接続の実装

目次トピックmysqlの追加、削除、変更、クエリを入力しますMySQL トランザクション処理私は M...

Linux7 ベースの Hadoop のインストールと構成の詳細なグラフィック説明

上記のように材料を準備します(ps: hadoop-3.1.2-srcはhadoop-3.1.2に変...

CSS3 フィルター (フィルタ) ウェブページのグレーまたは黒モードのサンプルコードを実現

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

タイムライン効果を実現するCSS3

最近、コンピューターの電源を入れたところ、Geek Academy が新規ユーザーに 1 か月の無料...

Vueプロジェクトをパッケージ化してリリースする手順

目次1. 開発環境から本番環境への移行2. 統一されたリクエストパスを設定する3. パッケージ化コマ...

Js の継承とプロトタイプチェーンを理解するのに役立つ記事

目次継承とプロトタイプチェーン継承されたプロパティ継承されたメソッドJavaScript でのプロト...

Web アプリ開発時間を短縮する 10 の時間を節約するヒント (グラフィカル チュートリアル)

今日の開発環境では、速いほど良いです。 「迅速なアプリケーション開発」、「アジャイル ソフトウェア開...