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


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扩展插件Validate—6 radio、checkbox、select的验证
Sep 05 Javascript
jquery插件推荐浏览器嗅探userAgent
Nov 09 Javascript
JavaScript中的方法调用详细介绍
Dec 30 Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 Javascript
谈谈因Vue.js引发关于getter和setter的思考
Dec 02 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
详解Javascript中DOM的范围
Feb 13 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
Apr 02 Javascript
js实现多张图片每隔一秒切换一张图片
Jul 29 Javascript
layer更改皮肤的实现方法
Sep 11 Javascript
对Layer UI 模块化的用法详解
Sep 26 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
Dec 07 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 get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
json 定义
2008/06/10 Javascript
js 表格隔行颜色
2009/12/02 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
Javascript实现字数统计
2015/07/03 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
PyQt5每天必学之组合框
2018/04/20 Python
python将字符串转换成json的方法小结
2019/07/09 Python
一行python实现树形结构的方法
2019/08/09 Python
Python绘制股票移动均线的实例
2019/08/24 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
全球最大的服务市场:Fiverr
2017/01/03 全球购物
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
七年级地理教学反思
2014/01/26 职场文书
好人好事事迹材料
2014/02/12 职场文书
安全口号大全
2014/06/21 职场文书
幽默导游词开场白
2015/05/29 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers