HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В уроке, посвящённом терминологии модуля<em>Grid</em>уже демонстрировался блог<em>Hexlet</em>и пример сетки, которую он использует. Вы могли заметить, что помимо непосредственно полос, по которым выстраивается контент, в этой сетке были использованы отступы между полосами. На изображении они были выделены оранжевым цветом.</p>
1 <p>В уроке, посвящённом терминологии модуля<em>Grid</em>уже демонстрировался блог<em>Hexlet</em>и пример сетки, которую он использует. Вы могли заметить, что помимо непосредственно полос, по которым выстраивается контент, в этой сетке были использованы отступы между полосами. На изображении они были выделены оранжевым цветом.</p>
2 <p>Зачем же они нужны? Зачастую, весь наш контент внутри ячеек располагается по всей ширине. В этом случае отступы между колонками являются заменой свойства<em>margin</em>, но с одним существенным условием: модуль<em>Grid</em>автоматически проставляет отступы только там, где это необходимо. Это значит, что при разработке нет нужды отменять ненужные<em>margin</em>у первых или последних полос сетки.</p>
2 <p>Зачем же они нужны? Зачастую, весь наш контент внутри ячеек располагается по всей ширине. В этом случае отступы между колонками являются заменой свойства<em>margin</em>, но с одним существенным условием: модуль<em>Grid</em>автоматически проставляет отступы только там, где это необходимо. Это значит, что при разработке нет нужды отменять ненужные<em>margin</em>у первых или последних полос сетки.</p>
3 <p>Отдельно стоит упомянуть о том, что данные отступы добавятся к ширине полос, внутри которых расположен элемент. Внутри самого элемента никаких отступов не будет.</p>
3 <p>Отдельно стоит упомянуть о том, что данные отступы добавятся к ширине полос, внутри которых расположен элемент. Внутри самого элемента никаких отступов не будет.</p>
4 <p>Перейдём от теории к практике. Возьмём один из примеров, который был в прошлых уроках. В нём представлена типичная схема двухколоночного макета, который часто встречается в разработке. Для удобства работы в данном уроке, помимо определения<em>Grid-областей</em>, укажем ширину каждой колонки в 100 пикселей:</p>
4 <p>Перейдём от теории к практике. Возьмём один из примеров, который был в прошлых уроках. В нём представлена типичная схема двухколоночного макета, который часто встречается в разработке. Для удобства работы в данном уроке, помимо определения<em>Grid-областей</em>, укажем ширину каждой колонки в 100 пикселей:</p>
5 <p><a>https://codepen.io/hexlet/pen/LYGOPVB</a></p>
5 <p><a>https://codepen.io/hexlet/pen/LYGOPVB</a></p>
6 <p>Обратите особое внимание на совместную работу свойств grid-template-areas, grid-template-columns/grid-template-rows. Как видно, они не являются заменой друг друга, а прекрасно работают в связке.</p>
6 <p>Обратите особое внимание на совместную работу свойств grid-template-areas, grid-template-columns/grid-template-rows. Как видно, они не являются заменой друг друга, а прекрасно работают в связке.</p>
7 <p>В этом примере представлен макет, состоящий из 6 колонок. Сейчас отступа между сайдбаром и основным контентом не существует. Обычно это плохо отражается на читаемости информации в макете, так как тексты из двух разных элементов начинают слипаться друг с другом.</p>
7 <p>В этом примере представлен макет, состоящий из 6 колонок. Сейчас отступа между сайдбаром и основным контентом не существует. Обычно это плохо отражается на читаемости информации в макете, так как тексты из двух разных элементов начинают слипаться друг с другом.</p>
8 <p><a>https://codepen.io/hexlet/pen/jOWaNrM</a></p>
8 <p><a>https://codepen.io/hexlet/pen/jOWaNrM</a></p>
9 <p>Для решения задачи создания отступов между<em>Grid-полосами</em>существует 2 свойства: grid-column-gap и grid-row-gap. Как можно догадаться из названия, первое свойство отвечает за отступ между колонками, а второе свойство - за отступ между рядами. В качестве значения свойства выступает любая доступная в<em>CSS</em>единица измерения. Будь то пиксели, проценты или любые другие единицы измерения.</p>
9 <p>Для решения задачи создания отступов между<em>Grid-полосами</em>существует 2 свойства: grid-column-gap и grid-row-gap. Как можно догадаться из названия, первое свойство отвечает за отступ между колонками, а второе свойство - за отступ между рядами. В качестве значения свойства выступает любая доступная в<em>CSS</em>единица измерения. Будь то пиксели, проценты или любые другие единицы измерения.</p>
10 <p>Создадим в нашем двухколоночном макете отступ между колонками в 30 пикселей. Для этого необходимо у<em>контейнера</em>выставить необходимое значение.</p>
10 <p>Создадим в нашем двухколоночном макете отступ между колонками в 30 пикселей. Для этого необходимо у<em>контейнера</em>выставить необходимое значение.</p>
11 <p><a>https://codepen.io/hexlet/pen/mdVBNGz</a></p>
11 <p><a>https://codepen.io/hexlet/pen/mdVBNGz</a></p>
12 <p>Если взглянуть на получившийся макет с помощью<em>Chrome DevTools</em>, то получим следующее:</p>
12 <p>Если взглянуть на получившийся макет с помощью<em>Chrome DevTools</em>, то получим следующее:</p>
13 <p>Обратите внимание на отступы между колонками и на то, что несмотря на них, не появилось никаких отступов внутри элементов. Отступы стали частью наших элементов. А между сайдбаром и основным контентом образовался необходимый отступ в 30 пикселей.</p>
13 <p>Обратите внимание на отступы между колонками и на то, что несмотря на них, не появилось никаких отступов внутри элементов. Отступы стали частью наших элементов. А между сайдбаром и основным контентом образовался необходимый отступ в 30 пикселей.</p>
14 <p>На самом деле свойства grid-column-gap и grid-row-gap потихоньку выводятся из стандарта. В спецификации<em>CSS</em>появляется возможность задавать точно такие же отступы в модуле<em>Flex</em>, чтобы уйти от текущих проблем с отрицательными отступами при создании макетов. По этой причине было принято решение сделать одни правила и для<em>Flex</em>, и для<em>Grid</em>. Новые версии свойств избавились от приставки<em>grid-*</em>и именуются просто column-gap и row-gap.</p>
14 <p>На самом деле свойства grid-column-gap и grid-row-gap потихоньку выводятся из стандарта. В спецификации<em>CSS</em>появляется возможность задавать точно такие же отступы в модуле<em>Flex</em>, чтобы уйти от текущих проблем с отрицательными отступами при создании макетов. По этой причине было принято решение сделать одни правила и для<em>Flex</em>, и для<em>Grid</em>. Новые версии свойств избавились от приставки<em>grid-*</em>и именуются просто column-gap и row-gap.</p>
15 <p>Для удобства, разработчики<em>CSS Grid Layout</em>добавили сокращённое свойство grid-gap (или просто gap) для возможности указать отступы между колонками и рядами в одном единственном свойстве. Свойство grid-gap может принимать 2 значения:</p>
15 <p>Для удобства, разработчики<em>CSS Grid Layout</em>добавили сокращённое свойство grid-gap (или просто gap) для возможности указать отступы между колонками и рядами в одном единственном свойстве. Свойство grid-gap может принимать 2 значения:</p>
16 <ul><li>Отступ между рядами.</li>
16 <ul><li>Отступ между рядами.</li>
17 <li>Отступ между колонками.</li>
17 <li>Отступ между колонками.</li>
18 </ul><p>Если указать только одно значение в свойстве, то браузер выставит данный отступ и для колонок, и для рядов.</p>
18 </ul><p>Если указать только одно значение в свойстве, то браузер выставит данный отступ и для колонок, и для рядов.</p>
19 <p><a>https://codepen.io/hexlet/pen/xxZPKgz</a></p>
19 <p><a>https://codepen.io/hexlet/pen/xxZPKgz</a></p>
20 <h2>Позиционирование полос</h2>
20 <h2>Позиционирование полос</h2>
21 <p>В<em>CSS Grid Layout</em>есть два свойства, позволяющие автоматически выровнять полосы внутри контейнера. Это свойства justify-content и align-content. Ничего не напоминает? Те, кто проходил курс по<em>Flex</em>конечно же узнали эти свойства. Теперь вы можете увидеть, как тесно между собой связаны модули<em>CSS Flexible Box Layout</em>и<em>CSS Grid Layout</em>. Разрабатывая с использованием этих двух модулей, вы часто будете пользоваться одинаковыми свойствами, которые, как не трудно догадаться, имеют и одинаковые значения. Посмотрим на них. В качестве примера возьмём 3 полосы, каждую из которых покрасим в свой цвет, чтобы более явно видеть разницу. Сам контейнер покрасим в серый цвет, чтобы видеть его ширину.</p>
21 <p>В<em>CSS Grid Layout</em>есть два свойства, позволяющие автоматически выровнять полосы внутри контейнера. Это свойства justify-content и align-content. Ничего не напоминает? Те, кто проходил курс по<em>Flex</em>конечно же узнали эти свойства. Теперь вы можете увидеть, как тесно между собой связаны модули<em>CSS Flexible Box Layout</em>и<em>CSS Grid Layout</em>. Разрабатывая с использованием этих двух модулей, вы часто будете пользоваться одинаковыми свойствами, которые, как не трудно догадаться, имеют и одинаковые значения. Посмотрим на них. В качестве примера возьмём 3 полосы, каждую из которых покрасим в свой цвет, чтобы более явно видеть разницу. Сам контейнер покрасим в серый цвет, чтобы видеть его ширину.</p>
22 <p><a>https://codepen.io/hexlet/pen/ExPbPRW</a></p>
22 <p><a>https://codepen.io/hexlet/pen/ExPbPRW</a></p>
23 <h3>justify-content</h3>
23 <h3>justify-content</h3>
24 <p>Свойство justify-content позволяет выровнять<em>Grid-полосы</em>по горизонтали. То есть выравниваются колонки относительно контейнера. Как и в модуле<em>Flex</em>, свойство justify-content может принимать следующие значения:</p>
24 <p>Свойство justify-content позволяет выровнять<em>Grid-полосы</em>по горизонтали. То есть выравниваются колонки относительно контейнера. Как и в модуле<em>Flex</em>, свойство justify-content может принимать следующие значения:</p>
25 <p><strong>start</strong>- это нормальное поведение элементов внутри контейнера. Все наши столбцы стартуют от левого края и идут по горизонтали друг за другом. Примеры в данном случае излишние.</p>
25 <p><strong>start</strong>- это нормальное поведение элементов внутри контейнера. Все наши столбцы стартуют от левого края и идут по горизонтали друг за другом. Примеры в данном случае излишние.</p>
26 <p><strong>end</strong>- При данном значении все элементы внутри контейнера сместятся к правой границе.</p>
26 <p><strong>end</strong>- При данном значении все элементы внутри контейнера сместятся к правой границе.</p>
27 <p><a>https://codepen.io/hexlet/pen/gOPXPZq</a></p>
27 <p><a>https://codepen.io/hexlet/pen/gOPXPZq</a></p>
28 <p><strong>center</strong>- как видно из названия, все элементы внутри контейнера будут отцентрованы внутри контейнера.</p>
28 <p><strong>center</strong>- как видно из названия, все элементы внутри контейнера будут отцентрованы внутри контейнера.</p>
29 <p><a>https://codepen.io/hexlet/pen/KKVyVEd</a></p>
29 <p><a>https://codepen.io/hexlet/pen/KKVyVEd</a></p>
30 <p><strong>stretch</strong>- Данное значение свойства является значением по умолчанию, когда колонкам не выставлена фиксированная ширина. Чтобы визуализировать это, изменим немного пример. Сделаем колонки с автоматической шириной. Блоки с тёмной границей являются элементами контейнера. Каждый элемент имеет ширину и высоту по 40 пикселей.</p>
30 <p><strong>stretch</strong>- Данное значение свойства является значением по умолчанию, когда колонкам не выставлена фиксированная ширина. Чтобы визуализировать это, изменим немного пример. Сделаем колонки с автоматической шириной. Блоки с тёмной границей являются элементами контейнера. Каждый элемент имеет ширину и высоту по 40 пикселей.</p>
31 <p>Обязательно попробуйте изменить значения свойства justify-content в данном примере, чтобы увидеть, как поведут себя элементы при уже известных вам значениях.</p>
31 <p>Обязательно попробуйте изменить значения свойства justify-content в данном примере, чтобы увидеть, как поведут себя элементы при уже известных вам значениях.</p>
32 <p><a>https://codepen.io/hexlet/pen/wvMPMOL</a></p>
32 <p><a>https://codepen.io/hexlet/pen/wvMPMOL</a></p>
33 <p><strong>space-around</strong>. Здесь всё работает точно так же, как и во<em>Flex</em>. Значение<em>space-around</em>сделает равные отступы между колонками и половину этого расстояния по краям контейнера.</p>
33 <p><strong>space-around</strong>. Здесь всё работает точно так же, как и во<em>Flex</em>. Значение<em>space-around</em>сделает равные отступы между колонками и половину этого расстояния по краям контейнера.</p>
34 <p><a>https://codepen.io/hexlet/pen/zYrPqdW</a></p>
34 <p><a>https://codepen.io/hexlet/pen/zYrPqdW</a></p>
35 <p><strong>space-evenly</strong>. Значение работает так же, как и<em>space-around</em>за одним исключением - отступы по краям контейнера выставляются не в половину расстояния между элементами, а в полную ширину.</p>
35 <p><strong>space-evenly</strong>. Значение работает так же, как и<em>space-around</em>за одним исключением - отступы по краям контейнера выставляются не в половину расстояния между элементами, а в полную ширину.</p>
36 <p><a>https://codepen.io/hexlet/pen/BajmKmo</a></p>
36 <p><a>https://codepen.io/hexlet/pen/BajmKmo</a></p>
37 <p><strong>space-between</strong>. При этом значении все элементы получают одинаковое расстояние между собой. При этом нет никаких отступов от краёв. Первый и последний элемент прижимаются к краям контейнера. Если таких элемента всего два, то они расположатся по краям контейнера.</p>
37 <p><strong>space-between</strong>. При этом значении все элементы получают одинаковое расстояние между собой. При этом нет никаких отступов от краёв. Первый и последний элемент прижимаются к краям контейнера. Если таких элемента всего два, то они расположатся по краям контейнера.</p>
38 <p><a>https://codepen.io/hexlet/pen/BajmKYj</a></p>
38 <p><a>https://codepen.io/hexlet/pen/BajmKYj</a></p>
39 <h3>align-content</h3>
39 <h3>align-content</h3>
40 <p>Свойство align-content по своему поведению очень похоже на свойство justify-content. Разница заключается только в направлении выравнивания. Если при justify-content выравнивались колонки внутри контейнера, то align-content выровняет ряды внутри контейнера. Для демонстрации воспользуемся одним примером<em>codepen</em>, внутри которого будут показаны все значения, которые принимает свойство.</p>
40 <p>Свойство align-content по своему поведению очень похоже на свойство justify-content. Разница заключается только в направлении выравнивания. Если при justify-content выравнивались колонки внутри контейнера, то align-content выровняет ряды внутри контейнера. Для демонстрации воспользуемся одним примером<em>codepen</em>, внутри которого будут показаны все значения, которые принимает свойство.</p>
41 <p><a>https://codepen.io/hexlet/pen/bGEYpxw</a></p>
41 <p><a>https://codepen.io/hexlet/pen/bGEYpxw</a></p>