ホームページ >WeChat アプレット >ミニプログラム開発 >WeChat ミニ プログラムにタブを実装する方法

WeChat ミニ プログラムにタブを実装する方法

不言
不言オリジナル
2018-09-07 14:16:042830ブラウズ

WeChat ミニ プログラムでのタブの適用はいたるところで見られます。この記事では、WeChat ミニ プログラムでのタブの実装について紹介します。

アイデア

  • 私は以前にスワイパーに基づいてタブを書いたことがありますが、ここでスワイパーコンポーネントが使用されているのは間違いありません

  • スワイパーに問題があります。コンテンツは高さに適応するため、wx.getSystemInfoSync を通じてデバイスの高さを取得し、スワイパーの高さを設定する必要があります。アプレットのスワイパー コンポーネントでは、スワイパー項目のコンテンツは使用できません。表示領域を超えた後にスクロールする必要があるため、ここでは別のコンポーネントのスクロールが使用されます。

  • ミニ プログラムのスワイパー コンポーネントの機能はまだ比較的限定されており、最適化する必要があります。

解決策1.まずjsにデータを設定します

 data: {
    tabs: ['菜单一', '菜单二'],// 导航菜单栏
    curIdx:0,// 当前导航索引
    scrollHeight:0, //滚动高度 = 设备可视区高度 -  导航栏高度
    list:[],// 内容区列表
  },

onLoad関数にデータを入力します

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let list=[];
    for (let i=1;i<=30;i++){
      list.push(i)
    }
    this.setData({
      list: list
    });
  },

2. WXMLでループ内にナビゲーションをレンダリングします

<!-- 导航栏开始 -->
<view class="swiper-tab">
  <view wx:for="{{tabs}}" wx:key class="swiper-tab-item {{curIdx==index?&#39;swiper-active&#39;:&#39;&#39;}}" data-current="{{index}}" catchtap="clickTab">
    <text>{{item}}</text>
  </view>
</view>

3. 現在アクティブなナビゲーションスタイルを設定します

/*初始化样式*/
view, text, picker, input, button, image{
  display: flex;
  box-sizing: border-box;
}
/* 导航样式*/
.swiper-tab {
  position: relative;
  width: 100%;
  height: 100rpx;
  justify-content: center;
  align-items: center;
}

.swiper-tab-item {
  background-color: #f3f3f3;
  width: 50%;
  height: 80rpx;
  justify-content: center;
  align-items: center;
}
.swiper-active{
  background-color: rgb(129, 190, 247);
  color: #fff;
}

4. コンテンツ表示領域

コンテンツ表示領域は、スワイパー コンポーネントの数がタブ配列の長さと一致している必要があります

<!-- 内容开始 -->
<swiper class="swiper_content" current="{{curIdx}}"   bindchange="swiperTab" style=&#39;height:{{scrollHeight}}px&#39;>
  <swiper-item>
    <scroll-view class="scroll-y" scroll-y style=&#39;height:{{scrollHeight}}px&#39; bindscrolltolower="onReachBottom">
    <view wx:for="{{list}}" wx:key>
      <text> 内容一{{item}}</text>
    </view>
        </scroll-view>
  </swiper-item>
  <swiper-item>
    内容二
  </swiper-item>
</swiper>

アプレット内のスワイパー コンポーネントには、コンテンツに応じて高さを調整できないため、[wx.getSystemInfoSync][4] を渡す必要があります。デバイスの高さを取得し、スワイパーの高さを設定します。

アプレットは視覚領域を超えるとスクロールできないため、ここでは別のコンポーネントが使用されます[scroll-view][5]。

onShow 関数の getSystemInfoSync を通じてデバイスの幅と高さを取得し、スワイパー コンポーネントの高さとスクロール ビューの高さを設定します

  onShow: function () {
    // 100为导航栏swiper-tab 的高度
   this.setData({
     scrollHeight: wx.getSystemInfoSync().windowHeight - (wx.getSystemInfoSync().windowWidth / 750 * 100),
   })
  },

5. ナビゲーション バーをクリックしてコンテンツを切り替えます小程序中的swiper组件有个问题就是不能根据内容自适应高度,所以要通过[wx.getSystemInfoSync][4]获取设备高度设置swiper高度
小程序中的swiper组件中swiper-item内容超出可视区后无法滚动显示,所以这里要用到另一个组件[scroll-view][5]。

  //点击切换
  clickTab: function (e) {
    this.setData({
      curIdx: e.currentTarget.dataset.current
    })
  },

6.コンテンツを選択してナビゲーションバーを切り替えます
  //滑动切换
  swiperTab: function (e) {
    this.setData({
      curIdx: e.detail.current
    });
  },

7. スクロール可能な領域の一番下までスクロールしてデータを更新します

  /**
 * 页面上拉触底事件的处理函数
 */
  onReachBottom: function () {
    // 更新列表
    let list = this.data.list;
    console.log(list)
    let lens = list.length
    for (let i = lens; i < lens+30; i++) {
      list.push(i)
    }
    this.setData({
      list: list
    });
  
  },

美しいタブが完成します。

完全なケース

上記はこの記事の全内容です。さらに興味深い情報については、php 中国語の Web サイトに注目してください。

以上がWeChat ミニ プログラムにタブを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。