微信小程序开发入门学习(2):小程序的布局
概述
小程序的布局采用了和Css3中相同的 flex(弹性布局)方式,使用方法也类似(只是属性名不同而已).
水平排列
默认是从左向右水平依次放置组件,从上到下依次放置组件。
任何可视组件都需要使用样式来设置自身的属性,并完成相应的布局。
在小程序中,可以使用两种方式设置样式,一种是 class 属性,另外一种是 style 属性,跟HTML中一样。
前者需要指定在 wxss 文件中定义的样式,后者允许直接在组件中定义样式属性。
例如,如果要水平放置三个 view 组件,可以在 wxml 文件中使用下面的代码。
<!-- index.wxml -->
<view class='flex-wrp' style='flex-direction:row'>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
</view>
index.wxss中使用
.flex-wrp{
background-color: #fff;
/* 弹性布局 */
display: flex;
height: 100px;
}
.flex-item{
width: 100px;
height: 100px;
}
.bc_green{
background-color: green;
}
.bc_red{
background-color: red;
}
.bc_yellow{
background-color: yellow;
}
效果:

也可以把 flex-direction:row 放在样式中
在index.wxss中添加一个
.flex_row{
/* 排列方式 */
flex-direction: row;
}
index.wxml改为:
<!-- index.wxml -->
<view class='flex-wrp flex_row'>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
</view>
如果放置了多个 view 会怎么样呢?
从 flex-item 样式可知,每个 view 的尺寸是 100*100,单位是像素(px),如果放置过多,可能会发生如下两种情况。
1.压缩view的宽度
2.折行
第一种情况:
<!-- index.wxml -->
<view class='flex-wrp flex_row'>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
</view>

发生了宽度压缩全部挤在了一行上
为了不让它被压缩 要让它自动换行就要采用 折行
水平折行排列
要想让 view 折行,只需要加一个 flex-wrap:wrap 即可,代码如下:
<!-- index.wxml -->
<view class='flex-wrp flex_row' style='flex-wrap:wrap'>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_yellow'></view>
</view>
为了让色块显示之间不那么紧凑 改动了一下index.wxss中的样式
.flex-item{
width: 100px;
height: 100px;
margin: 10px;
}
效果如下:

选择不同的手机模拟器(如 iPhone6 Plus、iPhone5),效果可能是不同的,因为每一行能显示的彩色方块数量是不同的。

垂直排列
只需要将 flex-direction 的属性值设为 column即可
<!-- index.wxml -->
<view class='flex-wrp flex_column'>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
</view>
index.wxss做以下更改.flex-wrp{
background-color: #fff;
/* 弹性布局 */
display: flex;
height: 400px; /* 更改 */
} .flex_column{ /* 新增 */
flex-direction: column;
}
效果如下:

如果在垂直方向上view过多也会发生压缩:

所有的子 view 都被压缩在垂直高度 300 px 的空间内(宽度未改变).
要使其折列跟折行的方式一样 只需加上 flex-wrap:wrap; 属性
.flex_column{
flex-direction: column;
flex-wrap: wrap;/*新增*/
}

折列排列是在第2列、第3列从上到下依次排列的
水平排列对齐方式
默认对齐方式为从左到右
左对齐,在 style 属性中加入 justify-content: flex-start
右对齐:flex-end
居中对齐:center
代码如下:
左对齐
<!-- index.wxml -->
<view class='flex-wrp flex_row' style='justify-content:flex-start;'>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
</view>
效果如下:
左对齐

右对齐

居中对齐:

垂直排列对齐方式
\对于垂直排列来说,需要使用 align-items 属性(默认是左对齐),而不是 justify-content 属性,这两个属性的取值基本上相同。
右对齐:
<!-- index.wxml -->
<view class='flex-wrp flex_column' style='align-items:flex-end;'>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
</view>

水平等间隔排列
如果想让 view 均匀地水平分别在窗口上,每两个 view 之间的间隔相同,那么就需要将 justify-content 属性的值设为 space-between,布局代码如下:
<!-- index.wxml -->
<view class='flex-wrp flex_row' style='justify-content: space-between;'>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
</view>

如果子 view 过多,并且设置为折行显示.
<!-- index.wxml -->
<view class='flex-wrp flex_row' style='justify-content: space-between;'>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
<view class='flex-item bc_yellow'></view>
<view class='flex-item bc_green'></view>
<view class='flex-item bc_red'></view>
</view>
.flex_row{
/* 排列方式 */
flex-direction: row;
/* 开启折行 */
flex-wrap: wrap;
}

从上图所示的效果来看,不管折多少行,同一行相邻两个 view 之间的间距都是相等的.
微信小程序开发入门学习(2):小程序的布局的更多相关文章
- 微信小程序开发入门学习(1):石头剪刀布小游戏
从今天起开始捣鼓小程序了2018-12-17 10:02:15 跟着教程做了第一个入门实例有兴趣的朋友可以看看: 猜拳游戏布局 程序达到的效果 猜拳游戏的布局是纵向显示了三个组件:文本组件(tex ...
- 微信小程序开发入门教程
做任何程序开发要首先找到其官方文档,微信小程序目前还在邀请内测阶段,目前官方放出了部分开发文档,经过笔者一天的查看和尝试,感觉文档并不全面,但是通过这些文档已经能够看出其大概面貌了.闲话不多说,我们先 ...
- 微信小程序开发:学习笔记[7]——理解小程序的宿主环境
微信小程序开发:学习笔记[7]——理解小程序的宿主环境 渲染层与逻辑层 小程序的运行环境分成渲染层和逻辑层. 程序构造器
- 微信小程序开发:学习笔记[5]——JavaScript脚本
微信小程序开发:学习笔记[5]——JavaScript脚本 快速开始 介绍 小程序的主要开发语言是 JavaScript ,开发者使用 JavaScript 来开发业务逻辑以及调用小程序的 API 来 ...
- 微信小程序开发:学习笔记[4]——样式布局
微信小程序开发:学习笔记[4]——样式布局 Flex布局 新的布局方式 在小程序开发中,我们需要考虑各种尺寸终端设备上的适配.在传统网页开发,我们用的是盒模型,通过display:inline | b ...
- 微信小程序开发:学习笔记[3]——WXSS样式
微信小程序开发:学习笔记[3]——WXSS样式 快速开始 介绍 WXSS(WeiXin Style Sheets)是一套用于小程序的样式语言,用于描述WXML的组件样式,也就是视觉上的效果. WXSS ...
- 微信小程序开发:学习笔记[2]——WXML模板
微信小程序开发:学习笔记[2]——WXML模板 快速开始 介绍 WXML 全称是 WeiXin Markup Language,是小程序框架设计的一套标签语言,结合小程序的基础组件.事件系统,可以构建 ...
- 微信小程序开发:学习笔记[1]——Hello World
微信小程序开发:学习笔记[1]——Hello World 快速开始 1.前往微信公众平台下载微信开发者工具. 地址:https://mp.weixin.qq.com/debug/wxadoc/dev/ ...
- 微信小程序开发:学习笔记[9]——本地数据缓存
微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...
随机推荐
- CSS零碎知识点
一.zoom:1 IE专有属性 可以设置或检索对象的缩放比例 触发IE的layout属性 清除浮动:overflow:hidden;zoom:1; 但要尽量比较使用这种方法 zoom:1;可以拯救IE ...
- gdb调试汇总
1. 启动GDB开始调试: (1)gdb program ///最常用的用gdb启动程序,开始调试的方式(2)gdb program core ///用gdb查看core dump文件,跟踪程序cor ...
- 用户“Michael-PC\Michael”不具有所需的权限。请验证授予了足够的权限并且解决了 Windows 用户帐户控制(UAC)限制问题。
解决方法:在注册表增加键值 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] 新建-选择“D ...
- hdu 3530 区间和在一定范围内最长区间
http://acm.hust.edu.cn/vjudge/problem/11253 这题要找到区间和在[m,k]范围内的最长区间 用两个单调序列保存区间最大值和最小值.当最大值-最小值>k时 ...
- jsp---》》》新闻发布系统的项目跟踪+++++++文件上传
先来一个分层架构图: WeebRoot目录下的页面: 现在,此项目以实现登录,注销,新闻列表,编辑主题>>>> 先来登录部分的关键代码 index.jsp中的代码 userIn ...
- 巧用CSS属性visibility与opacity代替鼠标经过的jQuery事件
一直使用jQuery的hover()函数来写鼠标经过事件,这几天发现其他同行直接使用CSS就搞定了.自己在线下也试了试: 当然也并不是没有前提条件,需要配合一些定位属性来使用(position/top ...
- php支付走过的坑(微信篇 包含h5支付和app支付 注册 秘钥 环境等等配置)
支付这东西,说容易也容易,说难也难 代码这玩意还比较好说 但是 如果没有demo 直接去看官方文档 十有八九一脸懵逼 今天就整理一下 支付这块走过的坑 涉及 微信h5支付 支付宝h5支付 (api文档 ...
- RESTful API设计基本原则
REST四个基本原则:1.使用HTTP动词:GET POST PUT DELETE:2.无状态连接,服务器端不应保存过多上下文状态,即每个请求都是独立的:3.为每个资源设置URI:4.通过XML JS ...
- Java Knowledge series 5
Interface from user, not from implementor.(DIP) Interface-Oriented Programming. Interface or Abstrac ...
- Extjs4几个小知识点
1.Why user "var me=this" in Extjs4?有个英文解释很好: Say you have a method in your object A which ...