设有display:flex
或者display:block
的元素就是一个flex container
(伸缩容器),里面的子元素称为flex item
(伸缩项目),flex container
中子元素都是使用Flex
布局排版。
-
display:block
指定为块内容器模式,总是使用新行开始显示,微信小程序的视图容器(view,scroll-view和swiper)默认都是dispaly:block
。 -
display:flex
:指定为行内容器模式,在一行内显示子元素,可以使用flex-wrap
属性指定其是否换行,flex-wrap
有三个值:nowrap(不换行),wrap(换行),wrap-reverse(换行第一行在下面)
使用display:block
(默认值)的代码:
1 2 3
显示效果:
改换成display:flex
的显示效果:
可以从效果图看到block
和flex
的区别,子元素view
是在换行显示(block
)还是行内显示(flex
)。
主轴和侧轴
Flex
布局的伸缩容器可以使用任何方向进行布局。
容器默认有两个轴:主轴(main axis)和侧轴(cross axis)。
主轴的开始位置为主轴起点
(main start),主轴的结束位置为主轴终点
(main end),而主轴的长度为主轴长度
(main size)。
同理侧轴的起点为侧轴起点
(cross start),结束位置为侧轴终点
(cross end),长度为侧轴长度
(cross size)。详情见下图:
注意,主轴
并不是一定是从左到右
的,同理侧轴
也不一定是从上到下
,主轴的方向使用flex-direction
属性控制,它有4个可选值:
-
row
:从左到右的水平方向为主轴 -
row-reverse
:从右到左的水平方向为主轴 -
column
:从上到下的垂直方向为主轴 -
column-reverse
从下到上的垂直方向为主轴
如果水平方向为主轴,那个垂直方向就是侧轴,反之亦然。
四种主轴方向设置的效果图:
图中的实例展示了使用了不同的flex-direction
值排列方向的区别。
实例代码:
1 2 3 c1 c2 c3
运行效果:
对齐方式
子元素有两种对齐方式:
justify-conent
定义子元素在主轴上面的对齐方式align-items
定义子元素在侧轴上对齐的方式
justify-content
有5个可选的对齐方式:
素在主轴上面的对齐方式
align-items
定义子元素在侧轴上对齐的方式
justify-content
有5个可选的对齐方式: