在移动Web开发中,经常使用Flex布局来实现自适应页面。Flex布局用法便捷,能够通过简单的几行代码实现各种复杂的布局效果。在微信小程序中也可以使用Flex布局实现自适应页面。
Flex布局又称为弹性盒(Flexible Box)布局,它为盒子模型提供了很强的灵活性,任何一个容器都可以指定为Flex布局。采用Flex布局的元素,称为Flex容器(简称容器)。它的所有子元素自动成为容器成员,称为Flex项目(简称项目)。容器内有两根轴:主轴(Main Axis)和交叉轴(Cross Axis),默认情况下主轴为水平方向,交叉轴为垂直方向,项目默认沿主轴排列,根据实际需要可以更改项目的排列方式。若想使用Flex布局,首先要设置父元素的display属性为flex,表示将父元素设置为容器,然后就可以使用容器和项目的相关属性了。
属性 | 说明 |
---|---|
flex-direction | 决定主轴的方向(即项目的排列方向),默认值为row,即主轴为从左到右的水平方向,项目按照主轴方向排列
|
flex-wrap | 规定是否允许项目换行,默认值为nowrap,即不换行 |
flex-flow | flex-direction和flex-wrap的组合属性,默认值为row nowrap |
justify-content | 定义了项目在主轴上的对齐方式,默认值为flex-start,即项目在主轴方向上,与主轴起始位置对齐
|
align-items | 定义项目在交叉轴上的对齐方式,默认值为normal(等同于stretch),即如果项目没有设置固定的大小,则会被拉伸填充满交叉轴方向剩余的空间
|
align-content | 只适用多行的容器,定义项目在交叉轴上的对齐方式,默认值为normal(等同于stretch),即交叉轴方向剩余的空间平均分配到每一行,并且行的高度会拉伸,填满整行的空间 |
order | 定义项目的排列顺序,按从小到大排列,默认值为0 |
flex-grow | 定义项目的放大比例,默认值为0,即如果存在剩余空间,该项目也不放大 |
flex-shrink | 定义项目的缩小比例,默认值为1,即如果空间不足,该项目将缩小 |
flex-basis | 定义在分配多余空间之前,项目占据的主轴空间,默认值为auto |
flex | flex-grow、flex-shrink和flex-basis的组合属性,默认值为0 1 auto |
align-self | 允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果父元素没有设置align-items属性,则等同于normal和stretch |