Свойство CSS grid-column-gap
Узнайте, как свойство CSS grid-column-gap задаёт промежутки между столбцами в сетке, его значения, примеры и замену column-gap.
Свойство grid-column-gap задаёт размер отступа (пустого пространства) между столбцами в раскладке CSS Grid. Оно управляет только горизонтальными промежутками между дорожками столбцов — отступы на внешних краях контейнера сетки не добавляются.
Значение может быть фиксированной длиной (например, px, rem или em) или процентом. При использовании процентов значение вычисляется относительно инлайн-размера (ширины) контейнера сетки.
grid-column-gap — устаревшее свойство. Это было раннее, специфичное для сетки название, которое браузеры впоследствии переименовали. В новом коде используйте современное свойство column-gap или сокращение gap, чтобы задать промежутки между строками и столбцами одновременно. Все современные браузеры по-прежнему воспринимают grid-column-gap как псевдоним column-gap, поэтому существующие раскладки продолжают работать — однако нет причин использовать его в новых таблицах стилей.
Зачем использовать gap вместо отступов?
До появления gap-свойств разработчики создавали промежутки между элементами сетки с помощью margin, а затем были вынуждены убирать лишний отступ, «вытекавший» на первый и последний элементы. grid-column-gap решает эту задачу элегантно: промежуток появляется только между дорожками столбцов, поэтому сетка остаётся вровень с контейнером с обеих сторон. Кроме того, браузер сохраняет одинаковый промежуток при увеличении или уменьшении дорожек, чего нельзя гарантировать при использовании отступов.
Справочник по свойству
| Свойство | Значение |
|---|---|
| Начальное значение | normal (эквивалентно 0 в сетке) |
| Применяется к | контейнерам Grid |
| Наследуется | Нет |
| Анимируемое | Да |
| Версия | CSS Grid Layout Module Level 1 |
| DOM-синтаксис | object.style.gridColumnGap = "30px" |
Синтаксис
grid-column-gap: <length-percentage> | normal | initial | inherit;<length-percentage>— неотрицательное значение вpx,em,rem,ch,vwили%. Отрицательные значения недопустимы.normal— значение браузера по умолчанию, которое в контексте сетки равно0.initial— сбрасывает свойство до начального значения (normal).inherit— наследует вычисленное значение от родительского элемента (редко полезно, посколькуgrid-column-gapне наследуется).
Примеры
Фиксированный промежуток (px)
Наиболее распространённый случай: фиксированный пиксельный промежуток, который не изменяется в зависимости от ширины контейнера.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.grid-container {
display: grid;
grid-template-columns: auto auto auto auto;
grid-column-gap: 30px;
grid-row-gap: 10px;
background-color: #666;
padding: 10px;
}
.grid-container > div {
background-color: #ccc;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
</style>
</head>
<body>
<h2>Grid-column-gap property example</h2>
<div class="grid-container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
</div>
</body>
</html>Результат
Двенадцать элементов распределяются по четырём столбцам; каждый столбец отделён от следующего на 30px, а grid-row-gap: 10px сохраняет расстояние между строками.
Процентный промежуток (%)
Процентное значение вычисляется относительно инлайн-размера (ширины) контейнера сетки. Отступы увеличиваются и уменьшаются при изменении размера контейнера.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.grid-container {
display: grid;
grid-template-columns: auto auto auto auto;
grid-column-gap: 20%;
grid-row-gap: 10px;
background-color: #666;
padding: 10px;
}
.grid-container > div {
background-color: #ccc;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
</style>
</head>
<body>
<h2>Grid-column-gap property example</h2>
<div class="grid-container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
</body>
</html>Процентные промежутки редко дают ожидаемый результат: при трёх промежутках по 20% они одни занимают 60% контейнера — оставляя лишь 40% для четырёх дорожек столбцов с auto. Фиксированные значения (px, rem, em) обеспечивают значительно более предсказуемые отступы.
Переход на современный синтаксис
Замена — это прямое переименование: значение остаётся тем же, меняется только имя свойства:
.grid-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
/* Deprecated — avoid in new code */
grid-column-gap: 30px;
/* Modern equivalent */
column-gap: 30px;
/* Or set both axes at once with the gap shorthand */
/* gap: <row-gap> <column-gap>; */
gap: 10px 30px;
}gap: 10px 30px эквивалентно row-gap: 10px; column-gap: 30px;. Передача одного значения — gap: 30px — применяет его как к строкам, так и к столбцам. Сокращение gap также работает внутри Flexbox-контейнеров, что делает его наиболее универсальным выбором.
Взаимодействие промежутков с единицами fr
Когда промежуток используется вместе со столбцами в fr, браузер вычитает всё пространство промежутков из доступной ширины до распределения долей fr. Это означает, что промежутки никогда не влияют на соотношение между дорожками:
.grid {
display: grid;
/* Three equal columns; gaps come out of available space first */
grid-template-columns: repeat(3, 1fr);
column-gap: 24px; /* modern equivalent of grid-column-gap: 24px */
}Если контейнер имеет ширину 300px и существует два промежутка по 24px, оставшиеся 252px делятся поровну: каждый столбец равен 84px. Именно поэтому дорожки в fr в сочетании с фиксированным column-gap (или grid-column-gap) обеспечивают более предсказуемые раскладки, чем процентные промежутки.
Значения
| Значение | Описание |
|---|---|
<length> | Фиксированный промежуток в px, em, rem и др. Отрицательные значения недопустимы. |
<percentage> | Процент от инлайн-размера (ширины) контейнера сетки. |
normal | Значение браузера по умолчанию, равное 0 внутри сетки. |
initial | Сбрасывает до начального значения (normal). |
inherit | Использует вычисленное значение родительского элемента. |
Практика
Связанные свойства
column-gap— современная замена данного свойства.gap— сокращение для одновременной установки промежутков между строками и столбцами.grid-row-gap— соответствующее свойство для вертикальных промежутков между строками.grid-template-columns— определяет дорожки столбцов, между которыми располагаются промежутки.grid-template-rows— определяет дорожки строк, на которые воздействуетgrid-row-gap.grid— сокращение, превращающее элемент в контейнер сетки.