微信小程序商城项目之侧栏分类效果(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 instanceof 与typeof使用说明
Jan 11 Javascript
jquery监控数据是否变化(修正版)
Apr 12 Javascript
javascript学习笔记(十二) RegExp类型介绍
Jun 20 Javascript
JavaScript的递归之递归与循环示例介绍
Aug 05 Javascript
跟我学习javascript的Date对象
Nov 19 Javascript
JavaScript表单验证实例之验证表单项是否为空
Jan 10 Javascript
jQuery遮罩层效果实例分析
Jan 14 Javascript
微信公众号 客服接口的开发实例详解
Sep 28 Javascript
vue 粒子特效的示例代码
Sep 19 Javascript
vue-cli构建项目下使用微信分享功能
May 28 Javascript
微信小程序动态添加view组件的实例代码
May 23 Javascript
js实现百度登录窗口拖拽效果
Mar 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
56.com视频采集接口程序(PHP)
2007/09/22 PHP
PHP HTML代码串截取代码
2008/12/29 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
event对象的方法 兼容多浏览器
2009/06/27 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
Angular实现form自动布局
2016/01/28 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
计算机网络专业推荐信
2013/11/24 职场文书
逃课上网检讨书
2014/02/20 职场文书
文明演讲稿范文
2014/05/12 职场文书
公司合并协议书范本
2014/09/30 职场文书
教师节感谢信
2015/01/22 职场文书
停电放假通知
2015/04/14 职场文书
2016高考感言
2015/08/01 职场文书
停车场管理制度范本
2015/08/05 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js
linux目录管理方法介绍
2022/06/01 Servers
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers