基本的布局方法——Flex布局
如果之前你接触过网页开发中的flexbox布局,基本上你可以略过这节。但有一点需要注意的是,你的小程序要求兼容到iOS8以下版本,需要开启样式自动补全。开启样式自动补全,在“设置”—“项目设置”—勾选“上传代码时样式自动补全”
在小程序开发中,我们需要考虑各种尺寸终端设备上的适配。在传统网页开发,我们用的是盒模型,通过display:inline | block | inline-block、 position、float来实现布局,缺乏灵活性且有些适配效果难以实现。比如像下面这种常见的信息列表,要求内容高度不确定下保持垂直居中:
这种情况下,我们更建议用flex布局。
在开始介绍flex之前,为了表述方便,我们约定以下术语:采用flex布局的元素,简称为“容器”,在代码示例中以container表示容器的类名。容器内的元素简称为“项目”,在代码示例中以item表示项目的类名。
(1)、基本概念
flex的概念最早是在2009年被提出,目的是提供一种更灵活的布局模型,使容器能通过改变里面项目的高宽、顺序,来对可用空间实现最佳的填充,方便适配不同大小的内容区域。
在不固定高度信息的例子中,我们只需要在容器中设置以下两个属性即可实现内容不确定下的垂直居中。
flex不单是一个属性,它包含了一套新的属性集。属性集包括用于设置容器,和用于设置项目两部分。
设置容器的属性有:
设置项目的属性有:
在开始介绍各个属性之前,我们需要先明确一个坐标轴。默认的情况下,水平方向的是主轴(main axis),垂直方向的是交叉轴(cross axis)。
项目是在主轴上排列,排满后在交叉轴方向换行。需要注意的是,交叉轴垂直于主轴,它的方向取决于主轴方向。
项目是在主轴上排列,排满后在交叉轴方向换行
接下来的例子如无特殊声明,我们都以默认情况下的坐标轴为例。
(2)、容器属性
设置容器,用于统一管理容器内项目布局,也就是管理项目的排列方式和对齐方式。
flex-direction 属性
通过设置坐标轴,来设置项目排列方向。
row(默认值):主轴横向,方向为从左指向右。项目沿主轴排列,从左到右排列。
row-reverse:row的反方向。主轴横向,方向为从右指向左。项目沿主轴排列,从右到左排列。
column:主轴纵向,方向从上指向下。项目沿主轴排列,从上到下排列。
column-reverse:column的反方向。主轴纵向,方向从下指向上。项目沿主轴排列,从下到上排列。
flex-wrap 属性
设置是否允许项目多行排列,以及多行排列时换行的方向。
nowrap(默认值):不换行。如果单行内容过多,则溢出容器。
wrap:容器单行容不下所有项目时,换行排列。
wrap-reverse:容器单行容不下所有项目时,换行排列。换行方向为wrap时的反方向。
justify-content 属性
设置项目在主轴方向上对齐方式,以及分配项目之间及其周围多余的空间。