微信小程序之左右布局的实现代码


Posted in Javascript onDecember 13, 2019

本文以一个简单的小例子,简述在微信小程序开发中左右布局功能的实现方式,主要涉及scroll-view ,列表数据绑定,及简单样式等内容,仅供学习分享使用。

概述

在微信小程序开发中,左右分栏(左边显示分类,右边显示明细,然后进行联动)是一种常见的布局方式,多应用于点餐,冷饮店,外卖,以及其他类似的商城。

布局分析

布局分析图示如下:

微信小程序之左右布局的实现代码

涉及知识点

  • scroll-view 可滚动视图区域。使用竖向滚动时,需要给<scroll-view>一个固定高度,通过 WXSS 设置 height。组件属性的长度单位默认为px,2.4.0起支持传入单位(rpx/px)。
  • scroll-y 是否允许纵向滚动,默认false。
  • scroll-into-view 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素(动态更新该属性的值,实现左右联动)。
  • view 基础控件。
  • hover-class 设置指定按下去的样式类。当 hover-class="none" 时,没有点击态效果。
  • wx:for 在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item。
  • bindtap='showItem' 绑定组件的单击事件,不加括弧。

示例效果图

示例效果图如下所示:

微信小程序之左右布局的实现代码

核心代码

WXML代码如下:

<!--pages/show/show.wxml-->
<view class="show-info">
 <scroll-view class='left' scroll-y>
  <view class="jy-item" wx:for="{{jytype}}" wx:key="id" hover-class="jy-item-hover" wx:for-item="item" bindtap='showItem' data-id="{{item.id}}">
   <image src="{{item.url}}"></image>
   <label>{{item.name}}</label>
  </view>
 </scroll-view>
 <scroll-view class='right' scroll-y scroll-into-view="{{viewId}}">
  <view class="jy-detail" wx:for="{{jydetail}}" wx:key="id" id= "D-{{detail.typeid}}-{{detail.id}}" wx:for-item="detail" bindtap='showDetail' data-id="{{detail.id}}">
   <image src="{{detail.url}}"></image>
   <label>{{detail.name}}</label>
  </view>
 </scroll-view>
</view>

JS代码如下:

showItem: function(event) {
  var that=this;
  var viewId = "D-" + event.currentTarget.dataset.id + "-" + event.currentTarget.dataset.id+"00";
  that.setData({
   viewId: viewId
  });
  console.log(viewId);
 },

WXSS布局如下,此处主要用到了盒子布局(display: flex;flex-direction: row;):

.show-info {
 height: 100%;
 display: flex;
 flex-direction: row;
 align-items: flex-start;
 padding: 10rpx 0;
 box-sizing: border-box;
}

.left {
 width: 30%;
 height: 100%;
 display: flex;
 flex-direction: column;
 margin:2px;
}

.jy-item-hover{
 border: none;
}

.right {
 width: 70%;
 height: 1200rpx;
 display: flex;
 flex-direction: column;
 margin: 2px;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 Javascript
使用jQuery实现星级评分代码分享
Dec 09 Javascript
Javascript的闭包详解
Dec 26 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
js的OOP继承实现(必看篇)
Feb 18 Javascript
Node.js数据库操作之查询MySQL数据库(二)
Mar 04 Javascript
javascript 动态生成css代码的两种方法
Mar 17 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
Js利用Canvas实现图片压缩功能
Sep 13 Javascript
微信小程序实现左右联动的实战记录
Jul 05 Javascript
Typescript3.9 常用新特性一览(推荐)
May 14 Javascript
js实现石头剪刀布游戏
Oct 11 Javascript
vue实现输入一位数字转汉字功能
Dec 13 #Javascript
小程序登录之支付宝授权的实现示例
Dec 13 #Javascript
小程序使用wxs解决wxml保留2位小数问题
Dec 13 #Javascript
微信小程序点击保存图片到本机功能
Dec 13 #Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 #Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 #Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 #Javascript
You might like
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
python实现的简单文本类游戏实例
2015/04/28 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
浅谈python迭代器
2017/11/08 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
django之自定义软删除Model的方法
2019/08/14 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
Ado与Ado.net的相同与不同
2014/12/08 面试题
营销与策划应届生求职信
2013/11/04 职场文书
教育实习生的自我评价分享
2013/11/21 职场文书
国际商务系学生个人的自我评价
2013/11/26 职场文书
社区庆八一活动方案
2014/02/02 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书