flex布局 —— 一维布局
基本概念
- Flexbox叫弹性盒模型,它的使用场景主要是屏幕自适应布局和取代浮动布局。
- 设置了display:flex属性的元素,称为Flex容器,他里面的所有子元素统称为容器成员,称为Flex项目。
- Flex容器有两根坐标轴:主轴(main axis)和交叉轴(cross axis)。
flex容器属性
flex-direction:决定主轴的方向即项目的排列方向。
flex-wrap:超出容器项目的排列样式。控制容器是单行显示还是多行显示。
flex-flow:flex-direction 属性和 flex-wrap 属性的简写形式。
justify-content:flex项目在主轴的排列方向。
align-items:flex项目在交叉轴的排列方向。
align-content:多根轴线的对齐方式。
flex-direction
flex-wrap
这个属性声明的是当容器中的项目一行放不下的时候,是让大家挤一挤呢,还是换行。
flex-wrap: nowrap; // 默认,不换行
flex-wrap: wrap; // 换行,第一行在上方。
flex-wrap: wrap-reverse // 换行,第一行在下方。
flex-content
justify-content: flex-start; // 默认,左对齐
justify-content: flex-end; // 右对齐
justify-content: center; // 居中
justify-content: space-between; // 两端对齐,项目之间的间隔都相等。
justify-content: space-around; // 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
align-items
定义flex项目在交叉轴上如何对齐。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。
align-items: flex-start; // 交叉轴的起点对齐。
align-items: flex-end; // 交叉轴的终点对齐。
align-items: center; // 交叉轴的中点对齐。
align-items: baseline; // 项目的第一行文字的基线对齐。
align-items: stretch; // 默认,如果项目未设置高度或设为auto,将占满整个容器的高度。
align-content
定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
align-content: flex-start; // 与交叉轴的起点对齐
align-content; flex-end; // 与交叉轴的终点对齐。
align-content: center; // 与交叉轴的中点对齐。
align-content: space-between;// 与交叉轴两端对齐,轴线之间的间隔平均分布。
align-content: space-around; // 每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
align-content: stretch; // 默认 轴线占满整个交叉轴。
flex项目属性
- order:flex项目的排列顺序
- flex-grow:flex项目剩余空间的拉伸比例
- flex-shrink:flex项目超出空间的压缩比例
- flex-basis:flex项目在不伸缩情况下的原始尺寸
- flex:flex项目的 flex 属性是 flex-grow,flex-shrink 和 flex-basis 的简写
- align-self