Flex处理逻辑
我发现对于前端小白来说,经常会把水平居中和垂直居中搞混。
而这个Flex,因为主轴是多向的,所以设置水平居中和垂直居中的语句是不固定的,这就非常尴尬。
PS:点击右侧→第三个按钮可以查看文章目录哟~
Flex简介
由两条轴组成的容器,类似初中数学的直角坐标系
主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end
Flex基本属性
flex-direction(主轴的方向【横竖都能定义成主轴】)
- row - 从左到右
- row-rewerse - 从右到左
- column - 从上到下
另一个同理
.box { flex-direction: row | row-reverse | column | column-reverse; }
flex-wrap(如何换行)
- nowrap - 不换行
- wrap - 换行
- wrap-reverse - 降序排序换行,第一行在最下方
.box{ flex-wrap: nowrap | wrap | wrap-reverse; }
flex-flow(以上两属性的简写)
.box { flex-flow: <flex-direction> || <flex-wrap>; }
Flex对齐方式
justify-content(在主轴上的对齐方式【direction设置的才是主轴】)
- flex-start(默认值):主轴开始位置对齐(假设主轴为row:左对齐,假设主轴为column:顶端对齐)
- flex-end:主轴结束位置对齐(假设主轴为row:右对齐,假设主轴为column:底端对齐)
- center: 主轴中间位置对齐(假设主轴为row:水平居中,假设主轴为column:垂直居中)
- space-between:两端对齐,项目之间的间隔都相等。
- space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
.box { justify-content: flex-start | flex-end | center | space-between | space-around; }
align-items(在次轴【又叫交叉轴】上的对齐方式)
- flex-start:交叉轴开始位置对齐。
- flex-end:交叉轴结束位置对齐。
- center:交叉轴中间位置对齐。
- baseline: 元素第一行文字底端【类似下划线】为基线做对齐。
- stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
.box { align-items: flex-start | flex-end | center | baseline | stretch; }
align-content(多根轴线的对齐方式)
因为轴线是按照主轴依次排下的,所以可以将轴线简单的理解为次轴【又叫交叉轴】
- flex-start:与交叉轴的起点对齐。
- flex-end:与交叉轴的终点对齐。
- center:与交叉轴的中点对齐。
- space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
- space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
- stretch(默认值):轴线占满整个交叉轴。
元素基本属性
order(元素排序)
数值越小越靠前
.item { order: <integer>; }
align-self - 对齐样式覆盖
默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch
.item { align-self: auto | flex-start | flex-end | center | baseline | stretch; }
元素缩放属性
flex-grow - 放大
默认为0,就算有剩余空间也不放大
其他数值,按照所有数值总和的比例增大
flex-shrink - 缩小
默认为0,就算有剩余空间也不缩小
其他数值,按照所有数值总和的比例缩小
flex-basis - 未缩放时固定的大小(大多没啥用)
固定大小,默认值auto,即与原大小相同
.item { flex-basis: <length> | auto; /* default auto */ }
flex - 以上三个的简写
.item { flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] }
参考 文章链接: Flex 布局教程:语法篇