“小程序:布局方法Flex简介”的版本间的差异
小 (Cloud17移动页面小程序:基本布局方法Flex至小程序:布局方法Flex简介) |
|||
第85行: | 第85行: | ||
接下来的例子如无特殊声明,我们都以默认情况下的坐标轴为例。 | 接下来的例子如无特殊声明,我们都以默认情况下的坐标轴为例。 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
2019年6月30日 (日) 10:05的最新版本
如果之前你接触过网页开发中的flexbox布局,基本上你可以略过这节。但有一点需要注意的是,你的小程序要求兼容到iOS8以下版本,需要开启样式自动补全。开启样式自动补全,在“设置”—“项目设置”—勾选“上传代码时样式自动补全”。
图4-2 开发者工具开启样式自动补全
在小程序开发中,我们需要考虑各种尺寸终端设备上的适配。在传统网页开发,我们用的是盒模型,通过display:inline | block | inline-block、 position、float来实现布局,缺乏灵活性且有些适配效果难以实现。比如像下面这种常见的信息列表,要求内容高度不确定下保持垂直居中:
图4-3 常见的信息列表排版方式
这种情况下,我们更建议用flex布局。
在开始介绍flex之前,为了表述方便,我们约定以下术语:采用flex布局的元素,简称为“容器”,在代码示例中以container表示容器的类名。容器内的元素简称为“项目”,在代码示例中以item表示项目的类名。
图4-4 container容器和item项目
基本概念
flex的概念最早是在2009年被提出,目的是提供一种更灵活的布局模型,使容器能通过改变里面项目的高宽、顺序,来对可用空间实现最佳的填充,方便适配不同大小的内容区域。
在不固定高度信息的例子中,我们只需要在容器中设置以下两个属性即可实现内容不确定下的垂直居中。
.container{ display: flex; flex-direction: column; justify-content: center; }
flex不单是一个属性,它包含了一套新的属性集。属性集包括用于设置容器,和用于设置项目两部分。
设置容器的属性有:
display:flex; flex-direction:row(默认值) | row-reverse | column |column-reverse flex-wrap:nowrap(默认值) | wrap | wrap-reverse justify-content:flex-start(默认值) | flex-end | center |space-between | space-around | space-evenly align-items:stretch(默认值) | center | flex-end | baseline | flex-start align-content:stretch(默认值) | flex-start | center |flex-end | space-between | space-around | space-evenly
设置项目的属性有:
order:0(默认值) | <integer> flex-shrink:1(默认值) | <number> flex-grow:0(默认值) | <number> flex-basis:auto(默认值) | <length> flex:none | auto | @flex-grow @flex-shrink @flex-basis align-self:auto(默认值) | flex-start | flex-end |center | baseline| stretch
在开始介绍各个属性之前,我们需要先明确一个坐标轴。默认的情况下,水平方向的是主轴(main axis),垂直方向的是交叉轴(cross axis)。
图4-5 默认情况下的主轴与交叉轴
项目是在主轴上排列,排满后在交叉轴方向换行。需要注意的是,交叉轴垂直于主轴,它的方向取决于主轴方向。
图4-6 项目是在主轴上排列,排满后在交叉轴方向换行
接下来的例子如无特殊声明,我们都以默认情况下的坐标轴为例。