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


Posted in Javascript onApril 17, 2017

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

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

布局分析:

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

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

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

wxml:

<!--主盒子--> 
<view class="container"> 
 <!--左侧栏--> 
 <view class="nav_left"> 
 <block wx:for="{{navLeftItems}}"> 
 <!--当前项的id等于item项的id,那个就是当前状态--> 
 <!--用data-index记录这个数据在数组的下标位置,使用data-id设置每个item的id值,供打开2级页面使用--> 
 <view bindtap="switchRightTab" class="nav_left_items {{curNav == item.id ? 'active' : ''}}" data-id="{{item.id}}" data-index="{{index}}">{{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}}&amp;typeid={{navRightItems[curIndex].id}}"> 
  <!--用view包裹图片组合,如果有图片就用,无图片提供就使用50x30的这个默认图片--> 
  <view>  
  <block wx:if="{{item.tree.logo}}"> 
  <img src="{{item.tree.logo}}" /> 
  </block> 
  <block wx:else=""> 
  <img src="http://temp.im/50x30" /> 
  </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 
 }) 
 } 
 
})

 

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

Javascript 相关文章推荐
JavaScript关于select的相关操作说明
Jan 13 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
Apr 09 Javascript
js Dialog 去掉右上角的X关闭功能
Apr 23 Javascript
javascript 获取元素样式必杀技
May 04 Javascript
底部悬浮通栏可以关闭广告位的实现方法
Jun 01 Javascript
微信小程序 绘图之饼图实现
Oct 24 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
Bootstrap php制作动态分页标签
Dec 23 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
jQuery tip提示插件(实例分享)
Apr 28 jQuery
解决React Native端口号修改的方法
Jul 28 Javascript
vue实现Toast组件轻提示
Apr 10 Vue.js
Map.vue基于百度地图组件重构笔记分享
Apr 17 #Javascript
JS简单验证上传文件类型的方法
Apr 17 #Javascript
JavaScript实现的商品抢购倒计时功能示例
Apr 17 #Javascript
巧用weui.topTips验证数据的实例
Apr 17 #Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 #jQuery
bootstrap select插件封装成Vue2.0组件
Apr 17 #Javascript
JS简单获取当前日期和农历日期的方法
Apr 17 #Javascript
You might like
第五节--克隆
2006/11/16 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
vue watch关于对象内的属性监听
2019/04/22 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python通过解析网页实现看报程序的方法
2014/08/04 Python
python常见排序算法基础教程
2017/04/13 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
对python中的logger模块全面讲解
2018/04/28 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
财务会计实习报告体会
2013/12/20 职场文书
幼儿园教师奖惩制度
2014/02/01 职场文书
团委竞选演讲稿
2014/04/24 职场文书
化验室安全管理制度
2015/08/06 职场文书
汽车销售员工作总结
2015/08/12 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server