0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Сетка - главный компонент фреймворка Bootstrap. Разные проекты подключают Bootstrap только для возможности использовать сетку. Действительно, система сеток уже давно отработана на сотнях проектов и отлажена.</p>
1
<p>Сетка - главный компонент фреймворка Bootstrap. Разные проекты подключают Bootstrap только для возможности использовать сетку. Действительно, система сеток уже давно отработана на сотнях проектов и отлажена.</p>
2
<p>Понимание работы сетки в Bootstrap - важнейший навык при работе. Поняв хитрости построения шаблонов, вы сможете делать сложные макеты и не прибегать к ненужным дописываниям стилей.</p>
2
<p>Понимание работы сетки в Bootstrap - важнейший навык при работе. Поняв хитрости построения шаблонов, вы сможете делать сложные макеты и не прибегать к ненужным дописываниям стилей.</p>
3
<p>Cетка - система линий, по которым выстраивается контент внутри шаблона. Эти линии являются невидимыми. Взгляните на шаблон блога Хекслета. На изображении указана сетка проекта. Темными линиями обозначены колонки, а оранжевыми отступы между колонками. Изучите этот пример и найдите закономерности того, как выстроен контент внутри блога.</p>
3
<p>Cетка - система линий, по которым выстраивается контент внутри шаблона. Эти линии являются невидимыми. Взгляните на шаблон блога Хекслета. На изображении указана сетка проекта. Темными линиями обозначены колонки, а оранжевыми отступы между колонками. Изучите этот пример и найдите закономерности того, как выстроен контент внутри блога.</p>
4
<p>Сетки в Bootstrap отвечают за раскладку блоков и за адаптивность. Сетка определяет, как на разных разрешениях будут отображаться контентные блоки.</p>
4
<p>Сетки в Bootstrap отвечают за раскладку блоков и за адаптивность. Сетка определяет, как на разных разрешениях будут отображаться контентные блоки.</p>
5
<p>Сетку можно разбить на три составные части:</p>
5
<p>Сетку можно разбить на три составные части:</p>
6
<ol><li>Контейнер</li>
6
<ol><li>Контейнер</li>
7
<li>Строки</li>
7
<li>Строки</li>
8
<li>Колонки</li>
8
<li>Колонки</li>
9
</ol><p>В качестве примера используем код с использованием сетки Bootstrap:</p>
9
</ol><p>В качестве примера используем код с использованием сетки Bootstrap:</p>
10
<p>В этой разметке демонстрируется подход<em>контейнер → строка → колонка</em>. Добавив текст в колонку с классом<em>.col</em>, получится следующий макет:</p>
10
<p>В этой разметке демонстрируется подход<em>контейнер → строка → колонка</em>. Добавив текст в колонку с классом<em>.col</em>, получится следующий макет:</p>
11
<p>Визуально кажется, что ничего особого не произошло, а текст вывелся так, как если бы не добавлялись контейнеры, строки, столбцы. Но это не так! Уже запущен механизм адаптивной сетки и выстраивание колонок. Добавим еще одну колонку с тем же текстом:</p>
11
<p>Визуально кажется, что ничего особого не произошло, а текст вывелся так, как если бы не добавлялись контейнеры, строки, столбцы. Но это не так! Уже запущен механизм адаптивной сетки и выстраивание колонок. Добавим еще одну колонку с тем же текстом:</p>
12
<p>Получились две колонки одинаковой ширины. Настало время повнимательнее изучить те классы, которые описаны в HTML.</p>
12
<p>Получились две колонки одинаковой ширины. Настало время повнимательнее изучить те классы, которые описаны в HTML.</p>
13
<h2>container</h2>
13
<h2>container</h2>
14
<p>Контейнер является ключевым элементом сетки Bootstrap. Главная задача контейнера - ограничение ширины контента. По умолчанию, контент в Bootstrap имеет<strong>максимальную ширину в 1140 пикселей</strong>. Это условие обуславливается доступностью: в этих рамках текст органично располагается по ширине и вмещает примерно 120 символов. Большее количество символов труднее читать, так как глазу сложнее перемещаться между строчками.</p>
14
<p>Контейнер является ключевым элементом сетки Bootstrap. Главная задача контейнера - ограничение ширины контента. По умолчанию, контент в Bootstrap имеет<strong>максимальную ширину в 1140 пикселей</strong>. Это условие обуславливается доступностью: в этих рамках текст органично располагается по ширине и вмещает примерно 120 символов. Большее количество символов труднее читать, так как глазу сложнее перемещаться между строчками.</p>
15
<p>Это ограничение можно обойти. Для этого в Bootstrap используется класс<em>.container-fluid</em>, который не ограничивает ширину контента внутри себя. Двухколоночный макет из примера выше при использовании<em>.container-fluid</em>будет выглядеть следующим образом:</p>
15
<p>Это ограничение можно обойти. Для этого в Bootstrap используется класс<em>.container-fluid</em>, который не ограничивает ширину контента внутри себя. Двухколоночный макет из примера выше при использовании<em>.container-fluid</em>будет выглядеть следующим образом:</p>
16
<p>Внутри себя контейнер хранит элементы любых видов. Это не обязательно должны быть строки. Если для элементов сетка не нужна, то не стоит создавать строку с одним единственным элементом внутри.</p>
16
<p>Внутри себя контейнер хранит элементы любых видов. Это не обязательно должны быть строки. Если для элементов сетка не нужна, то не стоит создавать строку с одним единственным элементом внутри.</p>
17
<p><strong>Важно:</strong>не вкладывайте контейнер внутри контейнера. Это плохая практика. При необходимости в нескольких контейнерах, вместо вкладывания друг в друга разделите их. Если в процессе разметки заметили, что нужен контейнер в контейнере, то успокойтесь, попейте кофе и пересмотрите подход.</p>
17
<p><strong>Важно:</strong>не вкладывайте контейнер внутри контейнера. Это плохая практика. При необходимости в нескольких контейнерах, вместо вкладывания друг в друга разделите их. Если в процессе разметки заметили, что нужен контейнер в контейнере, то успокойтесь, попейте кофе и пересмотрите подход.</p>
18
<h2>row</h2>
18
<h2>row</h2>
19
<p>Как и в таблицах, строки - неотъемлемый атрибут столбцов. В Bootstrap строка берет на себя роль flex-контейнера, внутри которой будут располагаться flex-элементы столбцы. Если пропустить обертку, то столбцы перестанут работать.</p>
19
<p>Как и в таблицах, строки - неотъемлемый атрибут столбцов. В Bootstrap строка берет на себя роль flex-контейнера, внутри которой будут располагаться flex-элементы столбцы. Если пропустить обертку, то столбцы перестанут работать.</p>
20
<p>Класс<em>.row</em>имеет следующие стили:</p>
20
<p>Класс<em>.row</em>имеет следующие стили:</p>
21
<p>Интересным здесь является использование отрицательных внешних отступов. Данный прием используется по причине того, что колонки внутри Bootstrap имеют внутренние отступы, которые отделяют колонки друг от друга на фиксированное значение в 30 пикселей. Чтобы компенсировать отступы слева и справа и не образовать лишние отступы у первого и последнего элемента в строке используются отрицательные отступы у контейнера, которым является<em>.row</em>.</p>
21
<p>Интересным здесь является использование отрицательных внешних отступов. Данный прием используется по причине того, что колонки внутри Bootstrap имеют внутренние отступы, которые отделяют колонки друг от друга на фиксированное значение в 30 пикселей. Чтобы компенсировать отступы слева и справа и не образовать лишние отступы у первого и последнего элемента в строке используются отрицательные отступы у контейнера, которым является<em>.row</em>.</p>
22
<p>Внутри<em>.row</em>содержатся только колонки! Это гарантирует правильную вложенность и возможность создавать адаптивность. Сторонние элементы выносятся за пределы<em>.row</em>.</p>
22
<p>Внутри<em>.row</em>содержатся только колонки! Это гарантирует правильную вложенность и возможность создавать адаптивность. Сторонние элементы выносятся за пределы<em>.row</em>.</p>
23
<p>Так как<em>.row</em>- flex-контейнер, то к нему возможно применять доступные свойства.</p>
23
<p>Так как<em>.row</em>- flex-контейнер, то к нему возможно применять доступные свойства.</p>
24
<h2>col и col-*</h2>
24
<h2>col и col-*</h2>
25
<p>В примере с двухколоночным макетом использовался класс<em>.col</em>, который равномерно распределяет пространство между колонками с такими классами внутри контейнера<em>.row</em>. В макетах такая операция часто не нужна, а необходимо дать блокам свое количество колонок. Bootstrap - 12-колоночная система. Из этого следует, что помимо класса<em>.col</em>при создании сетки доступны 12 классов вида<em>.col-*</em>, где * - количество колонок, которые займет элемент.</p>
25
<p>В примере с двухколоночным макетом использовался класс<em>.col</em>, который равномерно распределяет пространство между колонками с такими классами внутри контейнера<em>.row</em>. В макетах такая операция часто не нужна, а необходимо дать блокам свое количество колонок. Bootstrap - 12-колоночная система. Из этого следует, что помимо класса<em>.col</em>при создании сетки доступны 12 классов вида<em>.col-*</em>, где * - количество колонок, которые займет элемент.</p>
26
<p>В этом примере первая часть текста получила 4 колонки из 12, вторая же часть текста получила 8 колонок из 12. Bootstrap автоматически переносит колонки, если суммарно они занимают больше 12 частей. Если в строке меньше колонок, то при добавлении нового элемента можно забыть этот момент.</p>
26
<p>В этом примере первая часть текста получила 4 колонки из 12, вторая же часть текста получила 8 колонок из 12. Bootstrap автоматически переносит колонки, если суммарно они занимают больше 12 частей. Если в строке меньше колонок, то при добавлении нового элемента можно забыть этот момент.</p>
27
<p>Можно комбинировать класс<em>.col</em>с классами<em>.col-*</em>. Это позволит ограничивать только необходимую часть, автоматически просчитывая место для колонки с классом<em>.col</em>. Например, создавая двухколоночный макет, указывается<em>col-*</em>для сайдбара и<em>.col</em>для контентной части.</p>
27
<p>Можно комбинировать класс<em>.col</em>с классами<em>.col-*</em>. Это позволит ограничивать только необходимую часть, автоматически просчитывая место для колонки с классом<em>.col</em>. Например, создавая двухколоночный макет, указывается<em>col-*</em>для сайдбара и<em>.col</em>для контентной части.</p>
28
<p>Внутри колонок, как вы можете догадаться, может лежать абсолютно любой контент. В роли колонки так же может выступать любой элемент.</p>
28
<p>Внутри колонок, как вы можете догадаться, может лежать абсолютно любой контент. В роли колонки так же может выступать любой элемент.</p>
29
<p><strong>Важно:</strong>Такая структура как<em>контейнер → строка → колонка</em>обязательна. Держите это в голове каждый раз, как создаете сетку с помощью Bootstrap.</p>
29
<p><strong>Важно:</strong>Такая структура как<em>контейнер → строка → колонка</em>обязательна. Держите это в голове каждый раз, как создаете сетку с помощью Bootstrap.</p>
30
<p>Распространенная ошибка - исключение контейнера из этой цепочки. Хоть строка .row и не зависит напрямую от стилей контейнера, но не указав контейнер пропадет одна из компенсаций внутренних отступов, вы потеряете равномерное выравнивание контента на различных размерах<em>viewport</em>.</p>
30
<p>Распространенная ошибка - исключение контейнера из этой цепочки. Хоть строка .row и не зависит напрямую от стилей контейнера, но не указав контейнер пропадет одна из компенсаций внутренних отступов, вы потеряете равномерное выравнивание контента на различных размерах<em>viewport</em>.</p>