TUTORIAL

CSS3 Flexbox 布局从入门到精通

CSS3 Flexbox 布局从入门到精通

CSS3 Flexbox 布局从入门到精通

在企业官网开发中,元素的水平垂直居中、导航栏的自适应分布、卡片列表的等高排列,几乎都离不开 Flexbox。CSS3 引入的弹性盒模型(Flexible Box)专门解决"一维方向上的元素排列问题",是现代布局的基石。掌握它,能让你告别 float + clearfix 的繁琐写法。

一、Flexbox 布局模型与核心概念

Flexbox 的核心是"容器"与"项目"两层结构。给父元素设置 display: flex,它就变成弹性容器,其直接子元素自动成为弹性项目。容器默认存在两根轴:主轴(main axis)是项目排列的方向,交叉轴(cross axis)与主轴垂直。

理解这两根轴是学好 Flexbox 的关键。默认情况下主轴水平向右,交叉轴垂直向下。所有对齐属性都是相对于这两根轴定义的,而非屏幕的上下左右。一旦用 flex-direction: column 切换主轴方向,justify-content 控制的就变成了垂直方向。

  • flex-direction:决定主轴方向,row(默认)/ column / row-reverse / column-reverse
  • flex-wrap:是否换行,nowrap(默认不换行)/ wrap(换行)。
  • justify-content:项目在主轴上的对齐方式。
  • align-items:项目在交叉轴上的对齐方式。

二、主轴与交叉轴的常用属性

对齐属性是 Flexbox 用得最多的部分。justify-content 控制主轴分布,常用于导航栏均分、按钮居中等场景;align-items 控制交叉轴对齐,能让一排不等高的卡片顶端或中线对齐。

.nav {
  display: flex;
  justify-content: space-between; /* 两端对齐,中间均分 */
  align-items: center;            /* 交叉轴居中 */
  gap: 24px;                      /* 间距,替代 margin */
}

.center-box {
  display: flex;
  justify-content: center;        /* 水平居中 */
  align-items: center;            /* 垂直居中 */
  min-height: 320px;
}

项目自身也有三个关键属性,合写在 flex 简写里:flex-grow(放大比例)、flex-shrink(缩小比例)、flex-basis(初始尺寸)。日常开发中,flex: 1 是最常用的写法,表示"项目在剩余空间里等分放大",非常适合做左右两栏自适应布局——左侧定宽,右侧 flex: 1 撑满剩余。

三、实战:导航栏与卡片网格

下面演示两个企业官网高频场景。第一个是顶部导航:logo 靠左、菜单靠右、整体垂直居中,用 space-between 一行搞定。

<header class="site-header">
  <a class="logo">尧图建站</a>
  <nav class="menu">
    <a href="knowledge.html">开发学习</a>
    <a href="cat-case.html">客户案例</a>
    <a href="contact.html">联系我们</a>
  </nav>
</header>

.site-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 40px;
}

第二个是产品卡片网格。用 flex-wrap: wrap 让卡片自动换行,配合 flex: 1 1 280px 实现"每行尽可能多放、宽度不少于 280px"的自适应效果,无需媒体查询即可平滑响应。

.card-list {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
}
.card-list .card {
  flex: 1 1 280px; /* 放大 等分 / 缩小 / 基准宽度 */
  max-width: 380px;
}

需要强调的是,Flexbox 是一维布局,擅长处理"一行"或"一列"。当你需要同时控制行和列的二维排列时,应该交给 CSS Grid。两者并非对立,而是配合使用:整体页面用 Grid 划分区域,局部组件用 Flex 处理排列,这才是现代布局的最佳实践。

返回教程列表