之前在暑假的时候自己写过一段事件的小程序,当时对于Flex布局有过初步的了解,当时在写完小程序之后我还记得我说过,布局只要有Flex和Grid其他的都不重要。当时觉得这个布局十分的好用,但是并没有深入的去了解,但是经过深度学习之后,感觉比自己去摸索懂得会更透彻一些。
概念
Flex布局元素:
Flex容器:采用Flex布局的元素,作为父元素Flex项目:Flex布局内的子元素
Flex容器中有以下两个基本的概念:
- 主轴(
main axis):控制项目顺序的轴,方向根据flex-direction改变 - 交叉轴(
cross axis):与主轴水平垂直的轴
容器的属性
flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-cotent
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(默认值):默认拉伸填满整个容器flex-start:交叉轴的起点对齐flex-end:交叉轴的终点对齐center:交叉轴的中点对齐baseline:项目的第一行文字的基线对齐
align-content(只有设置flex-wrap属性之后才会生效)
flex-start:与交叉轴的起点对齐flex-end:与交叉轴的终点对齐cneter:与交叉轴的中点对齐space-between:与交叉轴两端对齐,轴线之间的间隔平均分布space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍space-evenly:每行之间,边上两行到边距的距离都相等
flex-flow(flex-direction属性和flex-wrap属性的简写形式)
- 格式:
flex-flow: <flex-direction> <flex-wrap>
项目的属性
order:设置排序顺序