zoukankan      html  css  js  c++  java
  • 微信小程序之左右布局

    本文以一个简单的小例子,简述在微信小程序开发中左右布局功能的实现方式,主要涉及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代码如下:

     1 <!--pages/show/show.wxml-->
     2 <view class="show-info">
     3   <scroll-view class='left' scroll-y>
     4     <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}}">
     5       <image src="{{item.url}}"></image>
     6       <label>{{item.name}}</label>
     7     </view>
     8   </scroll-view>
     9   <scroll-view class='right' scroll-y scroll-into-view="{{viewId}}">
    10     <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}}">
    11       <image src="{{detail.url}}"></image>
    12       <label>{{detail.name}}</label>
    13     </view>
    14   </scroll-view>
    15 </view>

    JS代码如下:

    1   showItem: function(event) {
    2     var that=this;
    3     var viewId = "D-" + event.currentTarget.dataset.id + "-" + event.currentTarget.dataset.id+"00";
    4     that.setData({
    5       viewId: viewId
    6     });
    7     console.log(viewId);
    8   },

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

     1 .show-info {
     2   height: 100%;
     3   display: flex;
     4   flex-direction: row;
     5   align-items: flex-start;
     6   padding: 10rpx 0;
     7   box-sizing: border-box;
     8 }
     9 
    10 .left {
    11   width: 30%;
    12   height: 100%;
    13   display: flex;
    14   flex-direction: column;
    15   margin:2px;
    16 }
    17 
    18 .jy-item-hover{
    19   border: none;
    20 }
    21 
    22 .right {
    23   width: 70%;
    24   height: 1200rpx;
    25   display: flex;
    26   flex-direction: column;
    27   margin: 2px;
    28 }

    备注

    学而时习之,不亦说乎。

  • 相关阅读:
    希望走过的路成为未来的基石
    第三次个人作业--用例图设计
    第二次结对作业
    第一次结对作业
    第二次个人编程作业
    第一次个人编程作业(更新至2020.02.07)
    Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    spring cloud springboot 框架源码 activiti工作流 前后分离 集成代码生成器
    java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码
  • 原文地址:https://www.cnblogs.com/hsiang/p/10886115.html
Copyright © 2011-2022 走看看