この記事の例では、ドロップダウンメニューのカプセル化を実装するためのVue + Element UIの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。 1. レンダリングまずレンダリングを投稿します。メニュー項目にはスタイルが設定されておらず、画像には境界線が表示されていません (境界線は外側のコンテナーの境界線です)。必要に応じて、他のスタイルを変更できます。 2. コンポーネントのパッケージングコンポーネントのカプセル化には、CSSアニメーション、配置、およびElement UIが提供するドロップダウンメニューコンポーネントel-dropdownを使用します。コードは次のとおりです。 <テンプレート> <div class="all" @click="clickFire"> <span class="item-border"> <el-image クラス="アイテム" スタイル="幅: 24px; 高さ: 24px" fit="カバー" :lazy="isLazy" :src="アイテムプロパティ.url" :title="アイテムプロパティ名" :placeholder="itemProperty.name" </el-image> </span> <div class="wrap-item"></div> <!-- ドロップダウン メニュー --> <el-dropdown class="dropMenu" @command="handleCommand"> <span class="el-dropdown-link" v-text="itemProperty.name"></span> <el-dropdown-menu スロット="ドロップダウン" クラス="dropMenuitems"> <!-- <el-dropdown-item>ゴールデンケーキ</el-dropdown-item> <el-dropdown-item>ライオンの頭</el-dropdown-item> <el-dropdown-item>カタツムリライスヌードル</el-dropdown-item> --> <el-ドロップダウン項目 class="ドロップメニュー項目" v-for="(item, index) in itemProperty.menus" :key="インデックス" :command="アイテム" >{{ 項目 }}</el-dropdown-item > </el-dropdown-menu> </el-dropdown> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 小道具: { 項目プロパティ: オブジェクト、 必要: true、 }, データ() { 戻る { isLazy: true、 アイテム: 名前: 'アイテム', url: require('../../../static/imgs/menus/warning.png'), メニュー: [ 'サブメニュー-1', 'サブメニュー2', 'サブメニュー3', 'サブメニュー-4', 'サブメニュー-5', ]、 }, } }, マウント() { this.$data.item = this.$props.itemプロパティ // console.log(this.$props.itemProperty) }, メソッド: { //親アイコンクリックイベント clickFire() { //パラメータ 1: 親コンポーネントで呼び出して親子コンポーネントの値転送をトリガーできるカスタム コンポーネント イベント。パラメータ 2: 親コンポーネントに渡されるデータ [配列形式にすることができます] this.$emit('clickItem', this.$data.item) }, //ドロップダウンメニューのクリックイベント handleCommand(command) { // console.log(コマンド) this.$emit('handleCommand', コマンド) }, }, } </スクリプト> <style lang="less" スコープ> 。全て { // 境界線: 1px ソリッドスカイブルー; 表示: インラインブロック; 位置: 相対的; 幅: 65px; 高さ: 65px; // オーバーフロー: 非表示; } // 最も内側のlayer.item-border { 表示: インラインブロック; マージン: 0 自動; 左マージン: 0px; 上マージン: 10px; 幅: 44px; 高さ: 44px; 境界線の半径: 50%; 境界線: 3px 実線スカイブルー; // 背景色: スレートブルー; 。アイテム { 位置: 絶対; 上位: 50%; 左: 50%; 変換: translate(-50%, -50%); } } // 最も外側のレイヤー.wrap-item { 位置: 絶対; 上: 0; 左: 0; 表示: インラインブロック; 幅: 56px; 高さ: 56px; 境界線: 5px の透明な点線; 左境界線: 5px 点線 #73ffff; 左境界線の幅: 3px; 右境界線の色: #73ffff; 境界線上部の色: 透明; 境界線の半径: 50%; // 背景色: バーリーウッド; アニメーション: 3 秒間の無限直線の円。 } @keyframes 円 { 0% { 変換: 回転(0度); } 100% { 変換: 回転(-360度); } } //ドロップダウンメニュー.dropMenu { 上マージン: 5px; // 背景色: 黄緑; 色: #fff; //タイトル item.el-dropdown-link { カーソル: ポインタ; } //メニューサブ項目.el-dropdown-menu__item { 色: 赤 !重要; } .dropMenu-item { 背景色: ローズブラウン; } } </スタイル> 3. 親コンポーネントでの使用例<テンプレート> <!-- 機能モジュール: サブコンポーネントを使用する - カスタム イベント clickItem と handleCommand に注意してください --> <div class="funcModules"> <リングアイテム クラス="リングアイテムスタイル" v-for="(item, index) in funcItems" :key="インデックス" :itemProperty="アイテム" @clickItem="クリックリングアイテム" @handleCommand="ハンドルコマンドドロップメニュー" /> </div> </テンプレート> <スクリプト> //1-サブコンポーネントをインポートします。import RingItem from '../Controls/RingItem' エクスポートデフォルト{ コンポーネント: //2-コンポーネントRingItemを登録します。 }, データ() { 戻る { //関数モジュールアイコンリソース funcItems: [ { 名前:「システム管理」 url: require('../../../static/imgs/menus/management.png'), メニュー: ['詳細管理', '会社概要'], }, ]、 } }, メソッド: { /** * RingItem サブコンポーネントのクリック イベント: 値はサブコンポーネントの発行によって渡される値です */ クリックリングアイテム(値) { //サブコンポーネントのname属性値を判断し、対応するビジネスロジックを実装する switch (value.name) { ケース「システム管理」: { console.log('システム管理') //ページジャンプ管理センターを実行します(必要に応じてビジネスロジックを追加します) //this.$router.push({ パス: '/admincenter' }) 壊す } } }, /** * RingItem サブコンポーネント: ドロップダウン メニューのクリック イベント (値はサブコンポーネントの発行によって渡される値です) */ handleCommandDropMenu(値) { console.log(値) スイッチ (値.名前) { ケース「詳細管理」: { console.log('システム管理') //ページジャンプ管理センターを実行します(必要に応じてビジネスロジックを追加します) //this.$router.push({ パス: '/admincenter' }) 壊す } ケース「会社概要」: { console.log('システム管理') //ページジャンプ管理センターを実行します(必要に応じてビジネスロジックを追加します) //this.$router.push({ パス: '/admincenter' }) 壊す } } }, }, } </スクリプト> <style lang="less" スコープ> //スタイル調整</style> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Idea は、Web プロジェクトを開始するように Tomcat を設定します。グラフィック チュートリアル
>>: Django がローカル MySQL データベースに接続する手順 (pycharm)
目次チュートリアルシリーズ1. バックアップ戦略の説明1. バックアップの種類2. バックアップで考...
Docker の基盤技術: Docker の基盤となる 2 つのコア テクノロジーは、名前空間とコ...
CSS には多くの属性があります。特に複数の値を設定する必要がある属性は、長期間使用しないと忘れられ...
この記事では、省、市、地区の3段階選択を実現するためのjsの具体的なコードを紹介します。具体的な内容...
1. インライン スタイル (<body></body> 内に配置されます)...
mysql は期間内のすべての日付または月を取得します1: mysqlは期間内のすべての月を取得し...
1. ダウンロード: http://www.oracle.com/technetwork/java/...
Jellyka Beesアンティーク手書き [ank]* ジェリーカ・カティカップケーキ LHF ジ...
<br />これは 123WORDPRESS.COM が提供する一連のチュートリアルです...
mysql マスタースレーブ構成1. 準備ホスト: 192.168.244.128スレーブ: 192...
目次1. ローカルストレージを構築する2. npmパッケージを作成し、プライベートリポジトリにアップ...
CSS3 の 3D 効果を使用して立方体を作成する方法を学ぶと、3D シーンの回転と変位のプロパティ...
序文クエリの最適化は一夜にして達成できるものではありません。対応するツールの使い方を学び、他の人の経...
1. データベース トランザクションによりデータベースのパフォーマンスが低下します。データの一貫性と...
最近確認された5件のデータを照会するビジネスがあります。 `id`、`title` を選択 `th_...