微信小程序商城项目之侧栏分类效果(1)

发布时间 - 2026-01-11 00:41:31    点击率:

在商场项目中,一般都会有分类页面。
分类页面可以给用户快速找到相关的商品,下面以侧栏分类为例,如下图

布局分析:

<主盒子>
<左盒子></左盒子>
<右盒子></右盒子>
</主盒子>

左盒子使用标准流
右盒子使用绝对定位(top、right)

wxml:

<!--主盒子--> 
<view class="container"> 
 <!--左侧栏--> 
 <view class="nav_left"> 
 <block wx:for="{{navLeftItems}}"> 
 <!--当前项的id等于item项的id,那个就是当前状态--> 
 <!--用data-index记录这个数据在数组的下标位置,使用data-id设置每个item的id值,供打开2级页面使用--> 
 <view class="nav_left_items {{curNav == item.id ? 'active' : ''}}" bindtap="switchRightTab" data-index="{{index}}" data-id="{{item.id}}">{{item.tree.desc}}</view> 
 </block> 
 </view> 
 <!--右侧栏--> 
 <view class="nav_right"> 
 <!--如果有数据,才遍历项--> 
 <view wx:if="{{navRightItems[curIndex].tree.nodes[1].tree.nodes}}"> 
 <block wx:for="{{navRightItems[curIndex].tree.nodes[1].tree.nodes}}"> 
 <view class="nav_right_items"> 
  <navigator url="../list/index?brand={{item.tree.id}}&typeid={{navRightItems[curIndex].id}}"> 
  <!--用view包裹图片组合,如果有图片就用,无图片提供就使用50x30的这个默认图片--> 
  <view>  
  <block wx:if="{{item.tree.logo}}"> 
  <image src="{{item.tree.logo}}"></image> 
  </block> 
  <block wx:else> 
  <image src="http://temp.im/50x30"></image> 
  </block> 
  </view> 
  <!--如果有文字,就用文字;无文字就用其他--> 
  <view wx:if="{{item.tree.desc}}"> 
  <text>{{item.tree.desc}}</text> 
  </view> 
  <view wx:else> 
  <text>{{item.tree.desc2}}</text> 
  </view> 
  </navigator> 
 </view> 
 </block> 
 </view> 
 <!--如果无数据,则显示数据--> 
 <view wx:else>暂无数据</view> 
 </view> 
</view> 

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: 30px; 
 /*垂直居中*/ 
 line-height: 30px; 
 /*再设上下padding增加高度,总高42px*/ 
 padding: 6px 0; 
 /*只设下边线*/ 
 border-bottom: 1px solid #dedede; 
 /*文字14px*/ 
 font-size: 14px; 
} 
/*左侧栏list的item被选中时*/ 
.nav_left .nav_left_items.active{ 
 /*背景色变成白色*/ 
 background: #fff; 
} 
 
/*右侧栏主盒子*/ 
.nav_right{ 
 /*右侧盒子使用了绝对定位*/ 
 position: absolute; 
 top: 0; 
 right: 0; 
 flex: 1; 
 /*宽度75%,高度占满,并使用百分比布局*/ 
 width: 75%; 
 height: 100%; 
 padding: 10px; 
 box-sizing: border-box; 
 background: #fff; 
} 
/*右侧栏list的item*/ 
.nav_right .nav_right_items{ 
 /*浮动向左*/ 
 float: left; 
 /*每个item设置宽度是33.33%*/ 
 width: 33.33%; 
 height: 80px; 
 text-align: center; 
} 
.nav_right .nav_right_items image{ 
 /*被图片设置宽高*/ 
 width: 50px; 
 height: 30px; 
} 
.nav_right .nav_right_items text{ 
 /*给text设成块级元素*/ 
 display: block; 
 margin-top: 5px; 
 font-size: 10px; 
 /*设置文字溢出部分为...*/ 
 overflow: hidden; 
 white-space: nowrap; 
 text-overflow: ellipsis; 
} 

js:

Page({ 
 data: { 
 navLeftItems: [], 
 navRightItems: [], 
 curNav: 1, 
 curIndex: 0 
 }, 
 onLoad: function() { 
 // 加载的使用进行网络访问,把需要的数据设置到data数据对象 
 var that = this  
 wx.request({ 
  url: 'http://huanqiuxiaozhen.com/wemall/goodstype/typebrandList', 
  method: 'GET', 
  data: {}, 
  header: { 
  'Accept': 'application/json' 
  }, 
  success: function(res) { 
  console.log(res) 
  that.setData({ 
   navLeftItems: res.data, 
   navRightItems: res.data 
  }) 
  } 
 }) 
 }, 
 
 //事件处理函数 
 switchRightTab: function(e) { 
 // 获取item项的id,和数组的下标值 
 let id = e.target.dataset.id, 
  index = parseInt(e.target.dataset.index); 
 // 把点击到的某一项,设为当前index 
 this.setData({ 
  curNav: id, 
  curIndex: index 
 }) 
 } 
 
}) 

demo地址:侧栏分类效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# 微信小程序分类  # 微信小程序商城  # 微信小程序侧栏分类  # 微信小程序实现侧边栏分类  # 微信小程序外卖选购页实现切换分类与数量加减功能案例  # 微信小程序首页的分类功能和搜索功能的实现思路及代码详解  # 微信小程序的分类页面制作  # 微信小程序商城项目之淘宝分类入口(2)  # 微信小程序商城项目之商品属性分类(4)  # 微信小程序 仿美团分类菜单 swiper分类菜单  # 微信小程序实现侧边分类栏  # 就用  # 背景色  # 会有  # 暂无  # 遍历  # 设为  # 为例  # 无图片  # 大家多多  # 如下图  # 设下  # 找到相关  # 占满  # 加载  # 使用了  # 成块  # 无数据  # nav_right_items  # tree  # navigator 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在IIS中新建站点并配置端口与物理路径?  Laravel如何为API生成Swagger或OpenAPI文档  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  EditPlus中的正则表达式 实战(2)  Swift中循环语句中的转移语句 break 和 continue  如何快速查询网站的真实建站时间?  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  微信小程序 canvas开发实例及注意事项  Laravel如何自定义分页视图?(Pagination示例)  历史网站制作软件,华为如何找回被删除的网站?  如何在云主机快速搭建网站站点?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  网站制作价目表怎么做,珍爱网婚介费用多少?  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel API资源类怎么用_Laravel API Resource数据转换  Laravel如何处理文件下载请求?(Response示例)  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  制作电商网页,电商供应链怎么做?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  深入理解Android中的xmlns:tools属性  黑客如何通过漏洞一步步攻陷网站服务器?  详解jQuery停止动画——stop()方法的使用  js实现点击每个li节点,都弹出其文本值及修改  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Android GridView 滑动条设置一直显示状态(推荐)  中国移动官方网站首页入口 中国移动官网网页登录  如何在阿里云高效完成企业建站全流程?  Laravel怎么为数据库表字段添加索引以优化查询  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Python函数文档自动校验_规范解析【教程】  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何用AWS免费套餐快速搭建高效网站?  Laravel怎么实现模型属性的自动加密  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何在IIS中配置站点IP、端口及主机头?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  北京企业网站设计制作公司,北京铁路集团官方网站?