微信小程序商城项目之侧栏分类效果(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 相关文章推荐
jQuery 中DOM 操作详解
Jan 13 Javascript
JS实现点击上移下移LI行数据的方法
Aug 05 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
Sep 03 Javascript
原生js编写焦点图效果
Dec 08 Javascript
EasyUI实现下拉框多选功能
Nov 07 Javascript
使用RN Animated做一个“添加购物车”动画的方法
Sep 12 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
Sep 21 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
May 16 Javascript
通过vue刷新左侧菜单栏操作
Aug 06 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 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
Zend 输出产生XML解析错误
2009/03/03 PHP
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
python获取本机mac地址和ip地址的方法
2015/04/29 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
python类和继承用法实例
2015/07/07 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
家长给幼儿园的表扬信
2014/01/09 职场文书
农村产权制度改革实施方案
2014/03/21 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python