Flex布局详解以及使用方式

Flex处理逻辑


  1. 确认主轴(是横向还是纵向)
  2. 设置换行格式(因为默认是不换行,所以还是有必要设置的)
  3. 【推荐直接使用flex-flow
  4. 设置主轴与次轴的对齐方式
  5. 有必要还可以设置一下缩放

我发现对于前端小白来说,经常会把水平居中和垂直居中搞混。

而这个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 布局教程:语法篇

猜你喜欢

转载自blog.csdn.net/taotaojs/article/details/82684132