微信小程序商城项目之侧栏分类效果(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 继承详解(三)
Jul 13 Javascript
javascript根据像素点取位置示例
Jan 27 Javascript
jQuery实现折线图的方法
Feb 28 Javascript
jQuery实现带动画效果的二级下拉导航方法
Mar 11 Javascript
JavaScript操作HTML元素和样式的方法详解
Oct 21 Javascript
老生常谈JavaScript中的this关键字
Oct 01 Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 Javascript
浅析Angular19 自定义表单控件
Jan 31 Javascript
React中如何引入Angular组件详解
Aug 09 Javascript
基于javascript实现放大镜特效
Dec 03 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
Dec 07 Javascript
javaScript Array api梳理
Mar 31 Javascript
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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
CentOS安装php v8js教程
2015/02/26 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
图片按比例缩放函数
2006/06/26 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
python实现文本文件合并
2015/12/29 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
python3去掉string中的标点符号方法
2019/01/22 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Python中itertools的用法详解
2020/02/07 Python
python3 配置logging日志类的操作
2020/04/08 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
汽车维修工岗位职责
2014/02/12 职场文书
刊首寄语大全
2014/04/11 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
长城导游词400字
2015/01/30 职场文书
感谢师恩主题班会
2015/08/17 职场文书