likes
comments
collection
share

不再一个个试错!这众多的flex属性

作者站长头像
站长
· 阅读数 10

流式布局

本篇我们将从流式布局的四大方面入手,旨在认识、了解、以至于掌握其特性及功能。

为什么要用?

在我们抛弃标准流、定位流以及浮动流之后,取而代之的是flex流式布局。以一种更加优雅的方式实现元素布局。

不再一个个试错!这众多的flex属性

轴的定义

在开始说它的特性之前,我们首先需要了解的是flex布局依靠的两个重要概念:主轴(一般为x轴)和交叉轴(一般为y轴)

那么我们如何改变或者说定义主轴和交叉轴呢?——flex-direction

flex-direction

flex-direction
row
row-reverse
column
column-reverse

下面以主轴为例,交叉轴即除了主轴之外的那一条,这里不再赘述。

row | row-reverse

设置了这个属性,主轴将沿着inline方向延展

1. row: 从左向右延展

2. row-reverse: 从右向左延展

不再一个个试错!这众多的flex属性

column | column-reverse

主轴会沿着block方向延展

1. column: 从上向下延展

2. column-reverse: 从下往上延展 不再一个个试错!这众多的flex属性

flex模块划分

flex布局
容器
主轴
交叉轴
父盒子
子盒子
justify-content
align-items
flex
align-self

父盒子

justify-content(设置主轴排列)

设置主轴的排序一般包括两个方面:

  1. 位置排列
    1. flex-start 容器开头对齐
    2. flex-end 容器尾部对齐
    3. center 容器居中
  2. 分布排列
    1. space-between
    2. space-around

不再一个个试错!这众多的flex属性

位置排列

也就是父容器在一整个占位盒子里面的位置,是在盒子开头(flex-start)、盒子中间(center)还是盒子最后flex-end。

分布排列

可以控制他的子容器们的排列状态,一般分为两部分:

space-around: 即将除盒子之外的剩余空间均分后分配在盒子中间,如上图所示 space-between: 即在上一种方式的基础上,盒子的开头和结尾也会被分配空间,不过分配的空间是子容器间的一半。

align-item(设置子容器的对齐方式)

align-items主要用于控制交叉轴元素内各个子元素的排列方式,一般将集中排列分类为位置排列基线排列拉伸排列

位置排列

子容器们的对齐方式,一般分为:

flex-start(交叉轴起始端对齐) 不再一个个试错!这众多的flex属性 (图1.1)

flex-end(交叉轴末端对齐) 不再一个个试错!这众多的flex属性(图1.2)

center(交叉轴居中对齐) 不再一个个试错!这众多的flex属性(图1.3)

基线排列

baseline

指内容的对齐方式是向基线(baseline)对齐,简单来说就是所有文字都处在同一水平,而baseline的高度与 根据MDN文档:侧轴起点到元素基线距离最大的元素将会于侧轴起点对齐以确定基线

不再一个个试错!这众多的flex属性

拉伸排列

align-items:stretch,让盒子沿着交叉轴拉伸到和父容器一致。

不再一个个试错!这众多的flex属性

子盒子

主要设置各个子容器的状态,一般分为主轴和交叉轴对子容器进行操作:

主轴:flex

flex

即设置子盒子是不是弹性的,他的伸缩比例由属性确定

交叉轴:align-self

align-self

设置子容器的排列方式

align-self
按照位置排列
flex-start
flexend
center
基线排列
baseline
拉伸排列
stretch

通过以上方式可以为单个子容器设置样式。这里举个例子:我们想要单独设置第一个子容器在交叉轴的位置处于开头,可以给单一容器加上align-self:flex-start,旨在给它本身自己添加这个属性。

不再一个个试错!这众多的flex属性

容易被忽略的点

三个我们比较容易忽略的属性:

  1. flex-grow --> 简写为flex: 0
  2. flex-shrink --> 简写为flex:1
  3. flex-basis --> 简写为flex:auto
  4. flex-wrap --> 换行

flex-grow

一般用于规定项在容器中分配剩余空间的相对比例,一般用于设置子容器的占比。

不再一个个试错!这众多的flex属性

flex-shrink

用于子容器的收缩规则,可以设置收缩占比,比如延展2倍(flex-shrink:2)或者缩小0.6倍(flex-shrink:0.6)

flex-basis

一般用于设置元素在主轴方向上的初始大小,默认是auto,如果需要改变盒子的大小我们可以使用flex-basis对子容器的大小进行改变,如:flex-basis:200px

不再一个个试错!这众多的flex属性

而我们想要通过文本大小设置容器大小的话可以通过:

  1. auto
  2. max-content
  3. min-content
  4. flex-basis test

flex-wrap

这里主要是分清wrap、nowrap和wrap-reverse的区别,相信通过下图即清晰可见

不再一个个试错!这众多的flex属性

总结

css样式繁多,但是只需要按照本文的分类,即可分门别类的对流式布局进行记忆;本人一般分为父容器子容器常用属性不常用属性 以及 其常见形式进行记忆.