微信小程序商城项目之侧栏分类效果(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中的call实现继承
Jan 22 Javascript
jquery将一个表单序列化为一个对象的方法
Dec 02 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 Javascript
jQuery实现内容定时切换效果完整实例
Apr 06 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
Apr 12 Javascript
jquery编写日期选择器
Mar 16 Javascript
基于vue.js实现侧边菜单栏
Mar 20 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
Jul 27 Javascript
深入理解React高阶组件
Sep 28 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
Jul 31 Javascript
vue element-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
基于Vant UI框架实现时间段选择器
Dec 24 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
js实现五星评价功能
2017/03/08 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
微信小程序实现蓝牙打印
2019/09/23 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
详解Django的CSRF认证实现
2018/10/09 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
python cookie反爬处理的实现
2020/11/01 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
见习期自我鉴定
2014/01/31 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
个人作风建设心得体会
2014/10/22 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
教师节校长致辞
2015/07/31 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python