微信小程序商城项目之侧栏分类效果(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 相关文章推荐
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
Mar 04 Javascript
Jquery ThickBox插件使用心得(不建议使用)
Sep 08 Javascript
Webkit的跨域安全问题说明
Sep 13 Javascript
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
Mar 04 Javascript
JS+CSS实现的拖动分页效果实例
May 11 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
Jan 04 Javascript
JavaScript纯色二维码变成彩色二维码
Jul 23 Javascript
jQuery实现table表格信息的展开和缩小功能示例
Jul 21 jQuery
Vue路由权限控制解析
Nov 09 Javascript
JavaScript实现图片合成下载的示例
Nov 19 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
PHP Ajax中文乱码问题解决方法
2009/02/27 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
python 数据加密代码
2008/12/24 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
使用C++扩展Python的功能详解
2018/01/12 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
韩国11街:11STREET
2018/03/27 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
烹调加工管理制度
2014/02/04 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
创建文明城市标语
2014/06/16 职场文书
三月雷锋月活动总结
2014/07/03 职场文书
求职信范文怎么写
2015/03/19 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
基于Redis位图实现用户签到功能
2021/05/08 Redis
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL