この記事の例では、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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
今日、会社の Springboot プロジェクトは、テストのためにテスト サーバーにデプロイする準備...
この記事の例では、ショッピングカートの加算と減算、価格計算を実装するためのjsの具体的なコードを共有...
最近、Textrea に転送したときに、データが本当に行ごとに保存できるかどうかという問題に遭遇しま...
導入: springboot プロジェクトを実行する Docker の構成は実は非常にシンプルで、L...
序文この記事では主に、MySQL で重複レコードをクエリして削除する方法を紹介します。参考と学習のた...
目次1. ChildNodes属性のトラバーサル2. 要素シリーズ属性のトラバーサル以前は、chil...
現在、このような要件があります。ログインした人がカスタマー サービス担当者である場合、注文は「このカ...
1: アドレス書き換えとアドレス転送の意味を理解する。アドレス書き換えとアドレス転送は異なる...
<br />友人と話し合っていたとき、フレームワークのレイヤー設計の中で最も核となるのは...
これは公式のスクリーンショットです。MySQL 5.7 をインストールすると、デフォルトのパスワード...
序文当社の MySQL オンライン環境のほとんどはバージョン 5.7.18 を使用しています。このバ...
1. 参照整合性参照整合性とは、主に外部キー制約を使用した複数のテーブル間の設計を指します。複数テ...
目次トランザクション分離レベルファントムリーディングとは何ですか?ファントムリードを排除する方法要約...
SVG (Scalable Vector Graphics)は、XML 構文に基づいた画像形式です。...
では早速、コードをお見せしましょう。具体的なコードは次のとおりです。 #!/bin/bash cd ...