flex 布局总结表

39 阅读2分钟

Flex(Flexible Box)布局是 CSS 中用于创建响应式布局的布局模型,能够在容器中灵活地排列、对齐和分布元素。以下是对 Flex 布局的详解总结。

基本概念

  1. Flex 容器(Flex Container):设定了 display: flexdisplay: inline-flex 的容器。
  2. Flex 项目(Flex Item):容器内的直接子元素,即被 Flex 布局控制的元素。

主轴和交叉轴

  • 主轴(Main Axis):项目排列的方向,默认是水平(row)。
  • 交叉轴(Cross Axis):垂直于主轴的方向,默认是垂直方向。

可以通过 flex-direction 控制主轴的方向和布局。

容器属性

属性作用取值
flex-direction定义主轴方向(项目排列方向)。row(默认,水平从左到右)、row-reversecolumn(垂直从上到下)、column-reverse
flex-wrap规定项目是否换行。nowrap(默认,不换行)、wrap(换行)、wrap-reverse(换行,反向)
flex-flowflex-directionflex-wrap 的简写。row wrap
justify-content定义主轴上项目的对齐方式。flex-start(默认,左对齐)、flex-end(右对齐)、centerspace-betweenspace-around
align-items定义交叉轴上项目的对齐方式。stretch(默认,填充容器高度)、flex-startflex-endcenterbaseline(基线对齐)
align-content多行对齐方式,适用于多行时的交叉轴对齐。stretchflex-startflex-endcenterspace-betweenspace-around

项目属性

属性作用取值
order定义项目的排列顺序,数值越小,排列越靠前,默认值为 0整数值
flex-grow定义项目的放大比例,容器有剩余空间时按比例分配。非负数,默认值为 0(不放大)
flex-shrink定义项目的缩小比例,容器空间不足时按比例缩小。非负数,默认值为 1(允许缩小)
flex-basis在分配多余空间之前定义项目的初始大小。auto(默认),或指定值(如 50%
flexflex-growflex-shrinkflex-basis 的简写。flex: 1 表示 flex-grow: 1; flex-shrink: 1; flex-basis: 0
align-self允许单个项目与交叉轴对齐方式不同,覆盖 align-items 设置。auto(默认),flex-startflex-endcenterbaselinestretch

常用布局示例

  1. 水平居中对齐

    .container {
      display: flex;
      justify-content: center;
      align-items: center;
    }
    
  2. 间距平均分布

    .container {
      display: flex;
      justify-content: space-between;
    }
    
  3. 垂直居中

    .container {
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
    }
    
  4. 多列响应式布局

    .container {
      display: flex;
      flex-wrap: wrap;
    }
    .item {
      flex: 1 1 30%; /* 项目初始宽度为30%,可以缩放 */
      margin: 10px;
    }