Bootstrap: отступы
классы bootstrap для управления отступами
К сожалению, я не располагаю временем для написания длинных статей, но я рад поделиться некоторыми приемами верстки, которые использую в своих проектах.
Значительное большинство frontend и fullstack разработчиков не испытывает радости при написании CSS-кода. И для этого есть целый ряд причин:
- разработчики не могут получить именно то, что хотят,
- CSS-код бывает громоздким, часто возникают ситуации, когда простейший визуальный трюк требует изменений большого количества свойств элементов,
- некоторые CSS-правила не являются прозрачными для понимания (простейший пример: для того, чтобы визуализировать свойства псевдоэлемента, нужно задать значение свойства content),
- нет единых стандартов для именования классов, правил использования ID и классов, использования уровней вложенности, отдельными темами для обсуждения являются методологии использования BEM, SMACSS и других технологий,
- CSS постоянно изменяется и растет: в различные периоды времени одни свойства становятся популярными, другие, наоборот, перестают использоваться,
- остутствует единая кроссбраузерная спецификация визуализации одних и тех же CSS-свойств, при написании кода всегда нужно тестировать результат, как минимум в четырех основных браузерах (и это еще не говоря об адаптивной верстке).
Список, приведенный выше, можно продолжать практически бесконечно.
Но я люблю играть с CSS. Для этого есть одна веская причина: когда я управляю CSS-кодом, CSS-код не может управлять мной.
Недавно я делал сайт с помощью Bootstrap 4 и, незаметно для себя, перешел к управлению отступами, рекомендуемому создателями этого фрейворка. Вот почему я это сделал:
- требуется знание всего нескольких классов,
- выравнивание элементов происходит в соответствии с существующей адаптивной сеткой,
- отступы учитывают наличие брейкпойнтов и не ломают верстку,
- можно управлять как вертикальными, так и горизонтальными отступами,
- полученный код не перегружен и легко читаем,
- не разрушается общая концепция UI,
- позволяет управлять отступами, внося изменения только в один файл.
Итак, следует знать, что для управления свойствами margin и padding различных элементов Bootstrap 4 имеет встроенные классы.
А теперь разберем подробно, какие именно встроенные классы Bootstrap 4 определяют отступы.
Именование классов
{property}{sides}-{size}
или
{свойство}{стороны}-{размер}
Дла адаптивной верстки используются брейкпойнты и именование классов имеет несколько иной вид:
{property}{sides}-{breakpoint}-{size}
или
{свойство}{стороны}-{брейкпойнт}-{размер}
Что же означает каждый параметр в именовании класса:
Property (cвойство)
- m - определяет margin,
- p - определяет padding.
Sides (стороны)
- t - для margin-top или padding-top,
- b - для margin-bottom или padding-bottom,
- l - для margin-left или padding-left,
- r - для margin-right или padding-right,
- x - для горизонтальных отступов: margin-right и margin-left или padding-right и padding-left,
- y - для вертикальных отступов: margin-top и margin-bottom или padding-top и padding-bottom,
- оставляем параметр пустым, если нужно установить одинаковое значение для всех отступов (вертикальных и горизонтальных).
Size (размер)
Основу размера составляет условная базовая единица измерения $spacer, например, 1rem.
- 0 - удаляет отступ,
- 1 - 0.25 условной единицы измерения,
- 2 - 0.5 условной единицы измерения,
- 3 - 1 условная единица измерения,
- 4 - 1.5 условные единицы измерения,
- 5 - 3 условных единицы измерения.
- auto - параметр будет установлен автоматически.
Начиная с Bootstrap 4.2, для значений 1, 2, 3, 4, 5 можно задать отрицательные отступы с помощью префикса n:
Пример:
Bootstrap 4: Responsive Utility Classes
Mark up Elements
Initial
Title
Paragraph text
Expand bottom
Title
Paragraph text
Shrink bottom
Title
Paragraph text
Использование встроенных классов для отступов позволяет стандартизировать верстку и значительно улучшить читабельность кода.
Следует заметить, что параметры именования классов можно модифицировать по своему усмотрению в файле _variables.scss
. Например:
$spacer: 1rem !default;
$spacers: () !default;
$spacers: map-merge(
(
0: 0,
1: ($spacer * .25),
2: ($spacer * .5),
3: $spacer,
4: ($spacer * 1.5),
45: ($spacer * 2.25),
5: ($spacer * 3),
55: ($spacer * 4),
6: ($spacer * 5),
65: ($spacer * 6.5),
7: ($spacer * 8)
),
$spacers
);
В заключение еще раз хочется сказать, что понимание основных принципов фреймворков и умение их корректно применять значительно улучшает качество любого проекта.
Спасибо