重新认识CSS中Flex属性

94 阅读2分钟

前言

Flex布局是一种新型的CSS布局方式,这主要用于弹性盒子布局。Flex布局方式比传统的布局更加灵活,也更加适应不同的设备和屏幕尺寸。

什么是Flex布局?

在过去主要使用浮动和定位作为我们的布局方式,但是当我们需要在不同的设备和屏幕尺寸上设计页面的时候,我们总不可能给每个尺寸都写一份吧?这未免也太低效了,所有Flex响应式布局也就开始占据布局方式的一席之地了。

Flex布局允许我们在一个容器内对子元素进行灵活的排列、对齐和空间分配。

Flex布局概念

容器和项目

一般Flex布局都是有一个父级元素包着一个个子元素,子元素自动成为Flex项目。

.container{
    display:flex;
}
<div class="container">
    <div class="item"></div>
    <div class="item">
      <p class="sub-item"></p>
    </div>
    <div class="item"></div>
</div>

Flex项目只能是容器的顶层子元素(直属子元素),不包含项目的子元素,比如上面的p元素就不是Flex项目,Flex布局只对项目生效。

主轴和交叉轴

主轴(main axis)是Flex项目的排列方向,沿其布局子容器的从main-start开始到main-end。主轴不一定是水平的,我们可以通过设置flex-direction来改变主轴。

交叉轴(cross axis)是垂直于主轴,它的方向取决于主轴的方向。主轴填满一行后将会另起一行,从cross-start到cross-end。

image.png

Flex基本属性

容器属性

  • flex-direction:定义了主轴的方向,可以是水平或垂直,以及起始和结束的方向
  • flex-wrap:决定了当容器空间不足时,项目是否换行
  • flex-flow:这是flex-direction和flex-wrap的简写形式
  • justify-content:设置项目在主轴上的对齐方式
  • align-items:定义了项目在交叉轴上的对齐方式
  • align-content:定义了多根轴线时,项目在交叉轴上的对齐方式
  • gap、row-gap、column-gap:设置容器内项目的间距
主轴方向

image.png

换行flex-wrap

image.png

项目对齐justify-content与align-items

justify-content

image.png

align-items image.png

多行对齐align-content

image.png

间隔gap、row-gap、column-gap

image.png

项目属性

  • order:指定项目的排列顺序
  • flex-grow:定义了在有可用空间时的放大比例
  • flex-shrink:定义了在空间不足时的缩小比例
  • flex-basis:指定了项目在分配空间前的初始大小
  • align-self:允许单个项目独立于其他项目在交叉轴上对齐

Ending

以上就是CSS中Flex布局的一些属性了。