column-gap

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

column-gap CSS 属性设置元素列之间的间距(gutter)大小。

column-gap 最初是 多列布局 的一部分,其定义已扩展到包括多种布局方法。现在在 CSS 盒对齐 中指定,它可用于多列、弹性盒和网格布局。

规范的早期版本将此属性称为 grid-column-gap,为了保持与旧版网站的兼容性,浏览器仍将接受 grid-column-gap 作为 column-gap 的别名。

试一试

column-gap: 0;
column-gap: 10%;
column-gap: 1em;
column-gap: 20px;
<section class="default-example" id="default-example">
  <div class="example-container">
    <div class="transition-all" id="example-element">
      <div>One</div>
      <div>Two</div>
      <div>Three</div>
      <div>Four</div>
      <div>Five</div>
    </div>
  </div>
</section>
#example-element {
  border: 1px solid #c5c5c5;
  display: grid;
  grid-template-columns: 1fr 1fr;
  width: 200px;
}

#example-element > div {
  background-color: rgb(0 0 255 / 0.2);
  border: 3px solid blue;
}

语法

css
/* Keyword value */
column-gap: normal;

/* <length> values */
column-gap: 3px;
column-gap: 2.5em;

/* <percentage> value */
column-gap: 3%;

/* Global values */
column-gap: inherit;
column-gap: initial;
column-gap: revert;
column-gap: revert-layer;
column-gap: unset;

column-gap 属性指定为以下列出的值之一。

normal

在列之间使用浏览器的默认间距。对于多列布局,这指定为 1em。对于所有其他布局类型,它为 0。

<length>

列之间的间距大小,定义为 <length><length> 属性的值必须是非负数。

<percentage>

列之间的间距大小,定义为 <percentage><percentage> 属性的值必须是非负数。

正式定义

初始值normal
应用于多列元素、弹性容器、网格容器
继承性
百分比参照内容区域的相应维度
计算值按指定,将 <length> 转换为绝对值,并且 normal 计算为零,多列元素除外
动画类型一个长度百分比或 calc();

正式语法

column-gap = 
normal |
<length-percentage [0,∞]>

<length-percentage> =
<length> |
<percentage>

示例

弹性布局

在此示例中,一个弹性容器包含六个具有两种不同宽度(200px300px)的弹性项目,创建的弹性项目未按网格布局。 column-gap 属性用于在相邻的弹性项目之间添加水平空间。

HTML

html
<div class="flexbox">
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

CSS

为了创建弹性容器,我们将其 display 属性值设置为 flex。然后,我们使用 flex-flow 简写属性将 flex-direction 设置为 row(默认值),将 flex-wrap 设置为 wrap,允许弹性项目在需要时流向新行。默认情况下,弹性项目会拉伸到与其容器一样高。通过设置 height,即使是空弹性项目也将高 100px

为了更好地演示 column-gap 属性,此示例中的弹性项目具有两个不同的宽度值。弹性项目的宽度在 <div> 弹性项目内设置。我们使用 flex 简写属性的 flex-basis 组件使所有弹性项目宽 200px。然后,我们通过使用 :nth-of-type(3n) 选择器定位每个第三个弹性项目,将其宽度扩展到 300px

column-gap 值在弹性容器上设置为 20px,以在每行相邻的弹性项目之间创建 20px 的间隙。

css
.flexbox {
  display: flex;
  flex-flow: row wrap;
  height: 100px;
  column-gap: 20px;
}

.flexbox > div {
  border: 1px solid green;
  background-color: lime;
  flex: 200px;
}
div:nth-of-type(3n) {
  flex: 300px;
}

结果

注意:虽然每个弹性行中相邻的弹性项目之间有水平空间,但行之间没有空间。要在弹性行之间设置垂直空间,您可以为 row-gap 属性指定一个非零值。 gap 简写属性也可用于在一个声明中设置 row-gapcolumn-gap,按该顺序。

网格布局

HTML

html
<div id="grid">
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

CSS

css
#grid {
  display: grid;
  height: 100px;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: 100px;
  column-gap: 20px;
}

#grid > div {
  border: 1px solid green;
  background-color: lime;
}

结果

多列布局

HTML

html
<p class="content-box">
  This is some multi-column text with a 40px column gap created with the CSS
  `column-gap` property. Don't you think that's fun and exciting? I sure do!
</p>

CSS

css
.content-box {
  column-count: 3;
  column-gap: 40px;
}

结果

规范

规范
CSS Box Alignment Module Level 3
# 列行间距
CSS 网格布局模块 Level 2
# 间距
CSS Multi-column Layout Module Level 1
# column-gap

浏览器兼容性

另见