CSS 布局与样式约 7 分钟

从 Flex 到 Grid:什么时候该换布局模型

两者不是替代关系。这篇笔记用卡片列表和页面骨架两个例子,说明按维度选择布局模型,比记住所有属性更实用。

网页上叠加显示的 CSS Grid 网格线示意
本文目录

Flex 和 Grid 都能做出同一张页面,区别在于谁负责计算。Flex 由内容决定位置,Grid 由容器先划好格子再往里放。哪一种写起来更短,往往就是更合适的那一种。

Grid 解决的是二维排列

卡片列表需要每一行的卡片宽度一致、上下对齐。用 Flex 要固定宽度或算百分比,换行后还得处理不足一行的占位;用 Grid 只要声明列宽规则,剩下的交给 auto-fit 和 minmax。

CSS
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
}

从 Flex 换到 Grid 的信号

  • 需要对齐行和列,而不只是排成一行
  • 元素数量会变化,但仍要保持规整间距
  • 页面骨架有固定侧栏和内容区,需要按区域分配空间

用 fr 和 minmax 做自适应列

fr 表示可分配空间的份数,minmax 给列宽定一个下限和上限,两者组合就能让列数随容器宽度自动变化,不需要写多个断点。

需要写多层嵌套才对齐的布局,通常是在用 Flex 做 Grid 的活。

相关阅读