0
点赞
收藏
分享

微信扫一扫

微信小程序(三)分类界面

攻城狮Chova 2022-04-03 阅读 82

分类

先用view写个主盒子,之后里面再写两个view,一个左一个右,

if条件判断,当条件为真时,渲染显示页面,为假时,不渲染

for循环,循环数组并渲染到页面

bindtap点击事件在同一个view中会向上冒泡,而catchtap 不会向上冒泡

js里获取数据

category.wxml

<!--pages/category/category.wxml-->
<!--主盒子-->
<view class="container">
  <!--左侧栏-->
  <view class="nav_left">
    <block wx:for="{{cateItems}}">
      <!--当前项的id等于item项的id,那个就是当前状态-->
      <!--用data-index记录这个数据在数组的下标位置,使用data-id设置每个item的id值,供打开2级页面使用-->
      <view class="nav_left_items {{curNav == item.cate_id ? 'active' : ''}}" bindtap="switchRightTab" data-index="{{index}}" data-id="{{item.cate_id}}">{{item.cate_name}}</view>
    </block>
  </view>
  <!--右侧栏-->
  <view class="nav_right">
    <!--如果有数据,才遍历项-->
    <view wx:if="{{cateItems[curIndex].ishaveChild}}">
      <block wx:for="{{cateItems[curIndex].children}}">
        <view class="nav_right_items">
        <!--界面跳转 -->
          <navigator url="../../detail/detail">
            <image src="{{item.image}}"></image>
            <text>{{item.name}}</text>
          </navigator>
        </view>
      </block>
    </view>
    <!--如果无数据,则显示数据-->
    <view class="nodata_text" wx:else>该分类暂无数据</view>
  </view>
</view>

category.js

Page({
    data: {
      cateItems: [
        {
          cate_id: 1,
          cate_name: "护肤",
          ishaveChild: true,
          children:
          [
            {
              child_id: 1,
              name: '洁面皂',
              image:"https://img.alicdn.com/bao/uploaded/i2/762503384/O1CN01Ontfxf1aruyJmtpoS_!!762503384.jpg" 
            },
            {
              child_id: 2,
              name: '卸妆',
              image: "https://tse1-mm.cn.bing.net/th/id/OIP-C.C-6yBbI2P-r-Jin3Rx4uvwHaHa?w=169&h=180&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 3,
              name: '洁面乳',
              image: "https://tse1-mm.cn.bing.net/th/id/OIP-C.W3A9Ae-77ViY0Ym5kLoYrQHaE8?pid=ImgDet&rs=1"
            },
            {
              child_id: 4,
              name: '面部祛角质',
              image: "https://pic2.zhimg.com/v2-d5ec8919ed3d2338da72f2b422176466_r.jpg?source=1940ef5c"
            },
            {
                child_id: 5,
                name: '手模',
                image: "https://cf.shopee.sg/file/763975892f3e35a1134ecee67c960023"
              },
              {
                child_id: 6,
                name: '面模',
                image: "https://tse1-mm.cn.bing.net/th/id/R-C.bc5fa3b1fcadfcaf6000ccc191b7a011?rik=EUVv5c0zGdZXvQ&riu=http%3a%2f%2fwww.tianya999.com%2fuploads%2fallimg%2f190103%2f2308-1Z103160S2.jpg&ehk=Y7sTZHFuE8lBIrAch0e4%2brkqVYTwPGUnJ0Bf%2bqlRRcQ%3d&risl=&pid=ImgRaw&r=0"
              },
              {
                child_id: 7,
                name: '水乳',
                image: "https://tse2-mm.cn.bing.net/th/id/OIP-C.GA29iySCOk-SZL4ZBz8EbwD6D6?w=158&h=176&c=7&r=0&o=5&dpr=1.25&pid=1.7"
              },
              {
                child_id: 8,
                name: '洗头膏',
                image: "https://tse3-mm.cn.bing.net/th/id/OIP-C.oEc37QR3kQmLOBFj5os1JwHaHa?w=210&h=210&c=7&r=0&o=5&dpr=1.25&pid=1.7"
              },
          ]
        },
        {
          cate_id: 2,
          cate_name: "彩妆",
          ishaveChild: true,
          children:
          [
            {
              child_id: 1,
              name: '气垫bb',
              image: "https://tse2-mm.cn.bing.net/th/id/OIP-C.sYfELdmLlMW5okmZj8ByMwHaHa?w=202&h=202&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 2,
              name: '修容/高光',
              image: "https://tse2-mm.cn.bing.net/th/id/OIP-C.IyiKOwJIJDh96UiJD70-8wHaHa?w=182&h=182&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 3,
              name: '遮瑕',
              image: "https://tse1-mm.cn.bing.net/th/id/OIP-C.aeJCqLv0rRgH45HI1mQviwHaHa?w=180&h=180&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 4,
              name: '腮红',
              image: "https://tse2-mm.cn.bing.net/th/id/OIP-C.JEAMu81FjOhUzrlZfZScmwHaHa?w=173&h=180&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 5,
              name: '粉饼',
              image: "https://tse2-mm.cn.bing.net/th/id/OIP-C.AvbnA6eIwW9k1N3B7HL21gHaHC?w=194&h=184&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 6,
              name: '粉底',
              image: "https://tse4-mm.cn.bing.net/th/id/OIP-C.U3YDK9QXvGFcN6vefgPouAHaFK?w=272&h=189&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 7,
              name: '蜜粉/散粉',
              image: "https://tse2-mm.cn.bing.net/th/id/OIP-C.deE_i9XVcUVPYrnSVpbGVQHaGD?w=248&h=203&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 8,
              name: '隔离霜',
              image: "https://tse2-mm.cn.bing.net/th/id/OIP-C.FDekzmg0N_EoNoZ7_QNa8AHaHa?w=195&h=195&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            }
          ]
        },
        {
          cate_id: 3,
          cate_name: "香水",
          ishaveChild: true,
          children:
          [
            {
              child_id: 1,
              name: '淡香水EDT',
              image: "https://tse3-mm.cn.bing.net/th/id/OIP-C.L22gqjdMg1THBTMcvnv8TAHaHa?w=198&h=197&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 2,
              name: '浓香水EDP',
              image: "https://tse3-mm.cn.bing.net/th/id/OIP-C.mawe6N3JwRaNlkkHdzxIewHaHa?w=211&h=211&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 3,
              name: '香体走珠',
              image: "https://tse3-mm.cn.bing.net/th/id/OIP-C.b_7ZFhZYxEZ_kezpDXxPHgHaHa?w=210&h=210&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            },
            {
              child_id: 4,
              name: '古龙香水男士的最爱',
              image: "https://tse4-mm.cn.bing.net/th/id/OIP-C._hsXM7Dv7FFyNbfj44A9JAEsEs?w=176&h=180&c=7&r=0&o=5&dpr=1.25&pid=1.7"
            }
          ]
        },
        {
          cate_id: 4,
          cate_name: "女装",
          ishaveChild: false,
          children: []
        },
        {
            cate_id: 5,
            cate_name: "男装",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 6,
            cate_name: "女鞋",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 7,
            cate_name: "男鞋",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 8,
            cate_name: "母婴",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 9,
            cate_name: "电器",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 10,
            cate_name: "手机",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 11,
            cate_name: "百货",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 12,
            cate_name: "箱包",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 13,
            cate_name: "进口",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 14,
            cate_name: "食品",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 15,
            cate_name: "数码",
            ishaveChild: false,
            children: []
          },
          {
            cate_id: 16,
            cate_name: "医药",
            ishaveChild: false,
            children: []
          }
      ],
      curNav: 1,
      curIndex: 0
    },
  
    //事件处理函数  
    switchRightTab: function (e) {
      // 获取item项的id,和数组的下标值  
      let id = e.target.dataset.id,
        index = parseInt(e.target.dataset.index);
      // 把点击到的某一项,设为当前index  
      this.setData({
        curNav: id,
        curIndex: index
      })
    }
  })  
  

category.wxss

/* pages/category/category.wxss */
page{  
  background: #f5f5f5;  
}  
/*总体主盒子*/  
.container {  
  position: relative;  
  width: 100%;  
  height: 100%;  
  background-color: #fff;  
  color: #939393;  
}
 /*左侧栏主盒子*/  
.nav_left{  
  /*设置行内块级元素(没使用定位)*/  
  display: inline-block;  
  width: 25%;  
  height: 100%;  
  /*主盒子设置背景色为灰色*/  
  background: #f5f5f5;  
  text-align: center;  
}  
/*左侧栏list的item*/  
.nav_left .nav_left_items{  
  /*每个高30px*/  
  height: 40px;  
  /*垂直居中*/  
  line-height: 40px;  
  /*再设上下padding增加高度,总高42px*/  
  padding: 6px 0;  
  /*只设下边线*/  
  border-bottom: 1px solid #dedede;  
  /*文字14px*/  
  font-size: 14px; 
}  
/*左侧栏list的item被选中时*/  
.nav_left .nav_left_items.active{  
  /*背景色变成白色*/  
  background: #fff;  
  color: #f0145a; 
}  
/*右侧栏主盒子*/  
.nav_right{  
  /*右侧盒子使用了绝对定位*/  
  position: absolute;  
  top: 0;  
  right: 0;  
  flex: 1;  
  /*宽度75%,高度占满,并使用百分比布局*/  
  width: 75%;  
  height: 1000px;  
  padding: 10px;  
  box-sizing: border-box;  
  background: #fff;  
}  
/*右侧栏list的item*/  
.nav_right .nav_right_items{  
  /*浮动向左*/  
  float: left;  
  /*每个item设置宽度是33.33%*/  
  width: 33.33%;  
  height: 120px;  
  text-align: center;  
}  
.nav_right .nav_right_items image{  
  /*被图片设置宽高*/  
  width: 60px;  
  height: 60px;  
  margin-top: 15px;  
}  
.nav_right .nav_right_items text{  
  /*给text设成块级元素*/  
  display: block;  
  margin-top: 15px;  
  font-size: 14px;  
  color: black;
  /*设置文字溢出部分为...*/  
  overflow: hidden;  
  white-space: nowrap;  
  text-overflow: ellipsis;  
} 
.nodata_text
{
  color: black;
  font-size: 14px;  
  text-align: center;  
} 

效果图

 

举报

相关推荐

0 条评论