Flex 布局中如何设置项目间距?gap 属性的兼容性如何?

gap 属性(推荐)

.container {
  display: flex;
  gap: 16px;              /* 行和列间距都是 16px */
  /* 或分别设置 */
  row-gap: 16px;
  column-gap: 24px;
}

gap 是 row-gap 和 column-gap 的简写,Flex、Grid 都支持。

兼容性

替代方案(旧方案)

1. margin + 负 margin

.container {
  display: flex;
  margin: -8px;  /* 抵消最外层多出来的 margin */
}
.item {
  margin: 8px;
}

2. margin + last-child / first-child

.item {
  margin-right: 16px;
}
.item:last-child {
  margin-right: 0;
}

3. justify-content: space-between(固定数量)

/* 仅适用于固定数量的项目 */
.container {
  display: flex;
  justify-content: space-between;
}

4. 使用选择器

.item + .item {
  margin-left: 16px;
}

最佳实践

现代项目直接用 gap,简单优雅:

.grid {
  display: flex;
  flex-wrap: wrap;
  gap: 16px 24px;  /* 行间距 16px,列间距 24px */
}

同分类其他题目