HTML Diff
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>