微信小程序商城项目之侧栏分类效果(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 经典动画菜单效果代码
Jan 26 Javascript
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
基于jquery自定义图片热区效果
Jul 21 Javascript
js Array对象的扩展函数代码
Apr 24 Javascript
javascript中String对象的slice()方法分析
Dec 20 Javascript
前端框架Vue.js中Directive知识详解
Sep 12 Javascript
深入理解Node.js 事件循环和回调函数
Nov 02 Javascript
vue中使用[provide/inject]实现页面reload的方法
Sep 30 Javascript
vue中的 $slot 获取插槽的节点实例
Nov 12 Javascript
微信小程序实现锚点功能
Nov 20 Javascript
vue 使用 canvas 实现手写电子签名
Mar 06 Javascript
在vue项目中 实现定义全局变量 全局函数操作
Oct 26 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根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
Python实现Youku视频批量下载功能
2017/03/14 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
详解Python 切片语法
2019/06/10 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
Python 私有化操作实例分析
2019/11/21 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
饲料采购员岗位职责
2013/12/19 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
查摆剖析材料范文
2014/09/30 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书