小程序分类页实现

分类界页面中,左边是一级目录,右边是一级目录对应的二级目录,根据这个需求,我们数据设计的结构是数组嵌套数组,第一个数组包含一级目录数据,嵌套的数组包含的是二级目录的数据。所以不多说,直接上代码吧。

  • wxml文件
    <view class="main">
      <view class="categroy-left">
       <!-- 当前项的id等于item项的id或者当前的下标等于item的下标时,那个就是当前状态- -->
           <view wx:for="{{category}}" wx:key="index" data-id="{{item.id}}" data-index="{{index}}"
               bindtap="switchTab"
               class="cate-list {{curIndex === index?'active':''}}">{{item.name}}</view>
       </view>
       <scroll-view class="categroy-right" scroll-y="{{}}" scroll-into-view="{{toView}}" scroll-with-animation="true">
         <view wx:if="{{category[curIndex].isChild}}">
           <block wx:for="{{category[curIndex].children}}" wx:for-index wx:key="idx">
             <view id="{{item.id}}" class="cate-box">
               <view class="cate-title">
                 <text>{{item.name}}</text>
               </view>
             </view>
           </block> 
         </view>
          <!-- 若无数据,则显示暂无数据 -->
          <view class='nodata' wx:else>该分类暂无数据</view>
        </scroll-view>
    </view>
    
    说明:
    curIndex === index?'active':'' ,根据是否和一级目录index相同,来判断是否选中文字。相同执行.cate-list.active样式,不相同则执行.cate-list样式。
  • js文件
    Page({
        data: {
          category: [
              {
                id:'guowei',
                name: '果味',
                isChild:true,
                children:[
                  {
                    child_id: 1,
                    name:"果味"
                  }
                ]
                },
              {
                id: 'shucai',
                name: '蔬菜',
                isChild: true,
                children: [
                  {
                    child_id: 1,
                    name: "蔬菜"
                  }
                ]
              },
              {
                id: 'chaohuo',
                name: '炒货',
                isChild: true,
                children: [
                  {
                    child_id: 1,
                    name: "炒货"
                  }
                ]
              },
              {
                id: 'dianxin',
                name: '点心',
                isChild: true,
                children: [
                  {
                    child_id: 1,
                    name: "点心"
                  }
                ]
              },
              {
                id: 'ganguo',
                name: '干果',
                isChild: false,
                children:[]
              },
              {
                id: 'clothes',
                name: '衣服',
                isChild: false,
                children: []
              },
            {
              id: 'bag',
              name: '包包',
              isChild: false,
              children: []
            },
            {
              id: 'woman',
              name: '女鞋',
              isChild: false,
              children: []
            },
            {
              id: 'mansport',
              name: '男鞋',
              isChild: false,
              children: []
            },
            {
              id: 'sports',
              name: '运动鞋',
              isChild: false,
              children: []
            },
            {
              id: 'hzp',
              name: '化妆品',
              isChild: false,
              children: []
            },
            {
              id: 'life',
              name: '日常用品',
              isChild: false,
              children: []
            },
            {
              id: 'computer',
              name: '电脑',
              isChild: false,
              children: []
            },
            {
              id: 'phone',
              name: '手机',
              isChild: false,
              children: []
            },
          ],
          curIndex: 0,
          toView: 'guowei'
        },
        
        switchTab(e){
          //将获取到的item的id和数组的下表值设为当前的id和下标
          this.setData({
            toView: e.target.dataset.id,
            curIndex: e.target.dataset.index
          })
        }
        
    })
    
  • wxss文件
    .main{
        width:100%;
        height: 100%;
    }
    .categroy-left{
        float: left;
        width: 150rpx;
        height: 100%;
        overflow-y: auto;
        border-right: 1px solid #ddd;
        box-sizing: border-box;
    }
    .categroy-left .cate-list{
        height: 90rpx;
        line-height: 90rpx;
        text-align: center;
        border-left: 3px solid #fff;
    }
    .categroy-left .cate-list.active{
        color: #AB956D;
        border-color: #AB956D;
    }
    .categroy-right{
        float: right;
        width: 600rpx;
        height: 100%;
    }
    .cate-box{
        height: 100%;
        padding:40rpx;
        box-sizing: border-box;
    }
    .cate-title{
        position: relative;
        height: 30rpx;
        line-height: 30rpx;
        padding:30rpx 0 55rpx;
        text-align: center;
        color: #AB956D;
        font-size: 28rpx;
    }
    .cate-title::before{
        position: absolute;
        left: 130rpx;
        top: 43rpx;
        content: '';
        width: 70rpx;
        height: 4rpx;
        background: #AB956D;
    }
    .cate-title::after{
        position: absolute;
        right: 130rpx;
        top: 43rpx;
        content: '';
        width: 70rpx;
        height: 4rpx;
        background: #AB956D;
    }
    
    .nodata{
        font-size: 14px;
        text-align: center;
        color: #AB956D;
        margin-top: 100px;
      }
    
  • 效果图
    在这里插入图片描述
    好啦,大功告成!✌️✌️✌️✌️✌️✌️

猜你喜欢

转载自blog.csdn.net/weixin_43363871/article/details/92630176
今日推荐