Grid 和 Flex 的区别?什么时候用哪个?

核心区别

特性 Flex Grid
维度 一维(行或列) 二维(行和列)
设计思路 内容优先 布局优先
适合 组件内布局 页面整体布局
项目排列 自动流式排列 精确定位到网格
重叠 不支持 支持(z 轴层叠)

什么时候用 Flex

.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

什么时候用 Grid

.page {
  display: grid;
  grid-template-columns: 250px 1fr;
  grid-template-rows: 60px 1fr 40px;
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
}

组合使用(最佳实践)

页面用 Grid,组件内用 Flex:

/* 页面骨架用 Grid */
.page {
  display: grid;
  grid-template-columns: 200px 1fr;
}

/* 组件内部用 Flex */
.card {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

选择原则

同分类其他题目