English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

微信小程序でtabs選択タブ効果を実現するサンプルコード

最近の微信アプリは非常に人気があり、非常に人気がありますが、検索キーワードが出てきたときに、さまざまなウェブサイトに表示されるのはすべて微信の公式ドキュメントの説明です。この流行に乗じて、この数日間は小程序技術ドキュメントをすべて読みました。多くのコンポーネントは微信内部で封装されていますが、タブオプションカード効果がないことを発見しました。この数日間はその研究をしました。以下のようです:

1、まずナビゲーションをクリックするときには2つの変数が必要です。1つは現在クリックされたスタイルクラスを保存し、もう1つは他のナビゲーションのデフォルトのスタイルクラスを保存します

2、タブコンテンツリストも同様に2つの変数が必要です。1つは現在表示されているブロックを保存し、もう1つは他の隠されたデフォルトブロックを保存します

3、トリガーをクリックしてナビゲーションインデックスを取得し、インデックスに応じてクラスを追加するかどうかを判断します【注:ここでは、クリックイベントを親ナビゲーションバーにバインドして、ターゲットオブジェクトからクリックトリガーイベントの属性を取得しています】

以下のイメージを参考にしてください:

      次に直接ソースコードを確認してください:

demo.wxml:

<view class="tab"> 
 <view class="tab-left" bindtap="tabFun"> 
  <view class="{{tabArr.curHdIndex=='0'? 'active' : ''}}" id="tab-hd01" data-id="0">tab-hd01</view> 
  <view class="{{tabArr.curHdIndex=='1'? 'active' : ''}}" id="tab-hd02" data-id="1">tab-hd01</view> 
  <view class="{{tabArr.curHdIndex=='2'? 'active' : ''}}" id="tab-hd03" data-id="2">tab-hd01</view> 
  <view class="{{tabArr.curHdIndex=='3'? 'active' : ''}}" id="tab-hd04" data-id="3">tab-hd01</view> 
 </view> 
 <view class="tab-right"> 
  <view class="right-item {{tabArr.curBdIndex=='0'? 'active' : ''}}">tab-bd01</view> 
  <view class="right-item {{tabArr.curBdIndex=='1'? 'active' : ''}}">tab-bd02</view> 
  <view class="right-item {{tabArr.curBdIndex=='2'? 'active' : ''}}">tab-bd03</view> 
  <view class="right-item {{tabArr.curBdIndex=='3'? 'active' : ''}}">tab-bd04</view> 
 </view> 
</view> 

demo.js:

Page( { 
 data: { 
  tabArr: { 
   curHdIndex: 0, 
   curBdIndex: 0 
  }, 
 }, 
 tabFun: function(e){ 
  //イベントをトリガーするコンポーネントのdataset属性を取得 
  var _datasetId=e.target.dataset.id; 
  console.log("----"+_datasetId+"----"); 
  var _obj={}; 
  _obj.curHdIndex=_datasetId; 
  _obj.curBdIndex=_datasetId; 
  this.setData({ 
   tabArr: _obj 
  }); 
 }, 
 onLoad: function( options ) { 
  alert( "------" ); 
 } 
}); 

demo.wxss:

.tab{ 
  display: flex; 
  flex-direction: row; 
} 
.tab-left{ 
  width: 200rpx; 
  line-height: 160%; 
  border-right: solid 1px gray; 
} 
.tab-left view{ 
  border-bottom: solid 1px red; 
} 
.tab-left .active{ 
  color: #f00; 
} 
.tab-right{ 
  line-height: 160%; 
} 
.tab-right .right-item{ 
  padding-left: 15rpx; 
  display: none; 
} 
.tab-right .right-item.active{ 
  display: block; 
} 

    最終的なデモ効果は以下の通りです:

 

ご読覧ありがとうございます。皆様のサポートに感謝します!

おすすめ