微信小程序Tab選項卡切換大集合


代碼地址如下:
http://www.demodashi.com/demo/14028.html

一、前期准備工作

軟件環境:微信開發者工具
官方下載地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

1、基本需求。
  • 實現用戶自定義彈框
  • 帶動畫(動畫可做參靠,個人要是覺得不好看可以自定義動畫)
  • 獲取彈出框的內容,自定義事件獲取
2、案例目錄結構

二、程序實現具體步驟

1.選項卡xxx.wxml代碼

a.tab1代碼

<view class="navbar">
  <view class="navbar-item" wx:for="{{navbar}}" wx:for-index="idx" wx:key="" data-idx="{{idx}}" bindtap="swichNav">
    <text class="navbar-text {{currentNavbar==idx ? 'active' : ''}}">{{item}}</text>
  </view>
</view>
<navigator url="/pages/index/index" hover-class="hover">
	<button class="btn-index">首頁</button>
</navigator>

b.tab2代碼

<view class="wrap" bindtouchstart="touchStart" bindtouchend="touchEnd">

  <view class="nav-item {{testClass[index]}}" wx:for="{{testNav}}" wx:key="" data-index="{{index}}">
    <view>{{item.word}}</view>
  </view>

</view>
<navigator url="/pages/index/index" hover-class="hover">
	<button class="btn-index">首頁</button>
</navigator>

c.tabbar代碼

<!--pages/tabbar/tabbar.wxml-->
<import src="../../template/list.wxml"/>

<view class="geekxz-tabbar-content">
  <view class="geekxz-tabbar-group">
    <text data-id="0" bindtap="changeTabbar" class="geekxz-tabbar-cell {{index == 0 ? 'geekxz-active' : ''}}">已獲得賞金</text>
    <text data-id="1" bindtap="changeTabbar" class="geekxz-tabbar-cell {{index == 1 ? 'geekxz-active' : ''}}">賞金在路上</text>
    <text data-id="2" bindtap="changeTabbar" class="geekxz-tabbar-cell {{index == 2 ? 'geekxz-active' : ''}}">邀請失敗</text>
  </view>
</view>
<view class="geekxz-list-box {{index == 0 ? '' : 'geekxz-hide'}}">
  <template wx:for="{{['選項卡一子選項 - 1','選項卡一子選項 -  2','選項卡一子選項 - 3','選項卡一子選項 - 4','選項卡一子選項 - 5','選項卡一子選項 - 6','選項卡一子選項 - 7','選項卡一子選項 - 8']}}" is="listNoneOnly" data="{{item}}" wx:key=""></template>
</view>
<view class="geekxz-list-box {{index == 1 ? '' : 'geekxz-hide'}}">
  <template wx:for="{{['選項卡二子選項 - 1','選項卡二子選項 -  2','選項卡二子選項 - 3','選項卡二子選項 - 4','選項卡二子選項 - 5']}}" is="listNoneOnly" data="{{item}}" wx:key=""></template>
</view>
<view class="geekxz-list-box {{index == 2 ? '' : 'geekxz-hide'}}">
  <template wx:for="{{['選項卡三子選項 - 1','選項卡三子選項 -  2','選項卡三子選項 - 3']}}" is="listNoneOnly" data="{{item}}" wx:key=""></template>
</view>
<navigator url="/pages/index/index" hover-class="hover">
	<button class="btn-index">首頁</button>
</navigator>
2.xxx.wxss代碼
.wrap{
  margin-top: 20rpx;
  color: #999;
  position: relative;
  width: 750rpx;
  height: 250rpx;
  border-top:1px solid #ccc;
  border-bottom:1px solid #ccc;

}

.nav-item{
  margin-top:10px;
  width: 400rpx;
  height: 200rpx;
  box-shadow: 0 0 5rpx #e24233;
  padding: 5rpx;
  transition: all 0.5s;
  word-break:break-all;
  background-color: snow;
}

.prev{
  position: absolute;
  transform: scale(0.8);
  left: -280rpx;
  margin-right: 55rpx;
}

.current{
  position: absolute;
  left: 50%;
  margin-left: -200rpx;

}

.next{
  position: absolute;
  left:620rpx;
  top: 0;
  transform: scale(0.8);
  z-index: 10;
}

.next+.next{
  z-index: -1;
  background-color: deepskyblue;
}

3.部分xxx.js邏輯代碼

a.部分的功能實現

swipNext (e) {
     flag++;
     if (flag < this.data.testNav.length){
       for (var i = 0; i < this.data.testNav.length; i++) {
         if (i == flag) {
           classCatch[i] = 'current';
         } else if (i < flag) {
           classCatch[i] = 'prev';
         } else {
           classCatch[i] = 'next';
         }
       }
       this.setData({
         testClass: classCatch
       })
     }else{
       flag = this.data.testNav.length-1;
     }
  },
  swipPrev(e) {
    flag--;
    if (flag+1 > 0 ) {
      for (var i = 0; i < this.data.testNav.length; i++) {
        if (i == flag) {
          classCatch[i] = 'current';
        } else if (i < flag) {
          classCatch[i] = 'prev';
        } else {
          classCatch[i] = 'next';
        }
      }
      this.setData({
        testClass: classCatch
      })
    } else {
      flag = 0;
    }
  }

三、案例運行效果圖


微信小程序Tab選項卡切換大集合

代碼地址如下:
http://www.demodashi.com/demo/14028.html

注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM