この記事の例では、ミニプログラムのカスタムタブバーコンポーネントをカプセル化するための具体的なコードを参考のために共有しています。具体的な内容は次のとおりです。 1. 新しいコンポーネントを作成する: コンポーネントの下にタブバーを作成する 2. コンポーネントの index.wxml 構造は次のとおりです。 <カバービュークラス="タブバー"> <カバービュークラス="タブバーボーダー"></カバービュー> <カバービュー wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="tabChange"> <カバーイメージ src="{{tabbarIndex === インデックス ? item.selectedIconPath : item.iconPath}}"></カバーイメージ> <カバービュー スタイル="color: {{tabbarIndex === index ? selectedColor : color}}">{{item.text}}</カバービュー> </カバービュー> </カバービュー> 3. コンポーネントの index.wxss 構造は次のとおりです。 .タブバー{ 位置: 固定; 下部: 0; 左: 0; 右: 0; 高さ: 60px; 背景: 白; ディスプレイ: フレックス; パディング下部: env(セーフエリアインセット下部); } .タブバーの境界線 { 背景色: rgba(0, 0, 0, 0.33); 位置: 絶対; 左: 0; 上: 0; 幅: 100%; 高さ: 1px; 変換: スケールY(0.5); } .タブバー項目 { フレックス: 1; テキスト配置: 中央; ディスプレイ: フレックス; コンテンツの中央揃え: 中央; アイテムの位置を中央揃えにします。 flex-direction: 列; } .タブバーアイテムカバー画像{ 幅: 28px; 高さ: 28px; 下マージン: 2px; } .tab-bar-item カバービュー { フォントサイズ: 10px; } 4. コンポーネントの index.js 構造は次のとおりです。 // ページ/コンポーネント/タブバー/index.js 成分({ /** 1. コンポーネントプロパティのリスト*/ オプション: multipleSlots: true // コンポーネントを定義するときにオプションで複数のスロットのサポートを有効にする}, プロパティ: リスト: { タイプ: 配列、 価値: [] }, 選択された色:{ タイプ: 文字列、 価値:'' }, 色:{ タイプ: 文字列、 価値:'' }, }, /** 2. コンポーネントの初期データ*/ データ: { tabbarIndex: 0 //デフォルトでは最初のタブ要素が表示されます}, 生涯: 添付() {} }, /** 3. コンポーネントメソッドリスト*/ メソッド: { //コンポーネントクリックイベントtabChange(e) { // 下部バー要素のインデックスを取得します。let index = e.currentTarget.dataset.index; this.setData({ タブバーインデックス:インデックス、 }) //triggerEvent はコンポーネントのイベントを取得します //onMyEvent ページから渡されたクリックイベント名 this.triggerEvent('onMyEvent',{ タブバーインデックス:インデックス、 }) }, } }) 5. コンポーネントの index.json 構造は次のとおりです。 { 「コンポーネント」:true、 "コンポーネントの使用": {} } 6. ページ内のコンポーネントの使用 { "navigationBarTitleText": "テスト", "コンポーネントの使用": { "mp-tabbar": "../components/tabBar/index" } } 8. ページの wxml コードは次のとおりです。 //タブ1が選択されたときにページに表示されるコンテンツ <view wx:if="{{tabbarIndex == 0}}">111111</view> //タブ2が選択されたときにページに表示されるコンテンツ <view wx:if="{{tabbarIndex == 1}}">222222</view> //タブ3が選択されたときにページに表示されるコンテンツ <view wx:if="{{tabbarIndex == 2}}">333333</view> <mp-tabbar list="{{list}}" id='tabComponent' bind:onMyEvent="tabChange"></mp-tabbar> 9. ページの js コードは次のとおりです。 ページ({ データ: { tabbarIndex:0, // デフォルトの最初のタブ要素の色: "#555555", 選択された色: "#2ea7e0", //ボトムバーリスト: [{ "テキスト": "市場", "アイコンパス": "/images/bazaar.png", "選択されたアイコンパス": "/images/bazaar_selected.png", }, { "text": "再充電", "アイコンパス": "/images/recharge.png", "selectedIconPath": "/images/recharge_selected.png", }, { "text": "艦隊", "アイコンパス": "/images/market.png", "選択されたアイコンパス": "/images/market_selected.png", } ] }, /** * ライフサイクル機能 - モニターページ表示 */ onShow: 関数() { this.tabComponent = this.selectComponent('#tabComponent'); selectedColor を this.data.selectedColor とします。 color = this.data.color とします。 this.tabComponent.setData({ 選択された色: 選択された色、 色:色 }) コンソールログ(this.tabComponent.data.tabbarIndex) }, //コンポーネントから渡されたデータを取得する tabChange:function(e){ index = e.detail.tabbarIndex とします。 this.setData({ タブバーインデックス:インデックス }) コンソールログ(e.detail.tabbarIndex) } }) 最終的な効果は図に示されています。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Dockerがsudo操作を使用する必要がある問題を解決する
目次シンプルファクトリーファクトリーメソッド安全な工場方法アブストラクトファクトリー要約するシンプル...
効果画像: 序文:最近、屋外の大画面プロジェクトに取り組んでいました。システムの入力方法は使いにくか...
コードをコピーコードは次のとおりです。 <thead> <!– 最初の 2 行をヘ...
目次TOKEN タイマーリフレッシュ2. access_tokenの内部設計2.1 access_t...
以前 HTML を解析したことがあるので、今日は Vue ドラッグ アンド ドロップを使用して、Ku...
次のスクリプトは、MySQLデータベース全体のスケジュールされたバックアップに使用されます。 mys...
通常の開発では、凸型の丸い角、つまり border-radius 属性を使用するのが一般的です。凹角...
図書館運営クエリ1.SHOW DATABASE; ----すべてのデータベースを照会する2. SHO...
目次1. 配列の平坦化の概念2. 実装1. 減らす2. toString と split 3. 結合...
この記事の例では、テーブルのシームレスなスクロールを実現するためのjQueryの具体的なコードを参考...
手ぶれ防止: 繰り返しのクリックによるイベントのトリガーを防止まず、揺れとは何でしょうか? 震えるの...
エラーメッセージ:エラー 2002: ソケット '/tmp/mysql.sock' ...
目次クエリキャッシュの最適化概要クエリプロセスクエリキャッシュ構成クエリキャッシュの無効化メモリ管理...
序文最近、X 省のコールド チェーン トレーサビリティ システムの開発で忙しくしています。毎日午後 ...
基本概念操作の前に、まずいくつかの基本的な概念を理解する必要がありますディスクLinux システムで...