Типография и утилиты
Типографика
Bootstrap задаёт базу:
body {
font-family: system-ui, -apple-system, ...;
font-size: 1rem;
line-height: 1.5;
color: #212529;
}
Что даёт: без настройки уже читаемый текст.
Заголовки
<h1>Заголовок 1</h1>
<h2>Заголовок 2</h2>
...
<h6>Заголовок 6</h6>
Классы:
<p class="h1">Как h1</p>
<p class="h2">Как h2</p>
Что даёт: стиль заголовка без семантики.
display-*:
<h1 class="display-1">Огромный</h1>
<h1 class="display-4">Крупный</h1>
<h1 class="display-6">Средний</h1>
Что даёт: крупные заголовки для hero.
Абзацы
<p>Обычный текст.</p>
<p class="lead">Лид-абзац — крупнее и светлее.</p>
<p class="text-muted">Приглушённый текст.</p>
Списки
<ul class="list-unstyled">
<li>Без маркеров</li>
</ul>
<ul class="list-inline">
<li class="list-inline-item">Первый</li>
<li class="list-inline-item">Второй</li>
</ul>
Что даёт:
list-unstyled— без маркеров.list-inline— в строку.
Цитаты
<blockquote class="blockquote">
<p>Цитата.</p>
<footer class="blockquote-footer">
Автор в <cite>Источник</cite>
</footer>
</blockquote>
Код
<code><div></code>
<kbd>Ctrl + C</kbd>
<pre><code>...</code></pre>
Утилиты
Утилиты — классы для быстрых правок без своего CSS.
Формат: {property}-{breakpoint}-{value}.
Пример: mt-3, mt-md-4, text-center, bg-primary.
Отступы
Свойства:
m— margin.p— padding.
Направления:
t— top.b— bottom.s— start (left в LTR).e— end (right в LTR).x— left + right.y— top + bottom.- (без буквы) — все стороны.
Значения:
0— 0.1— 0.25rem (4px).2— 0.5rem (8px).3— 1rem (16px).4— 1.5rem (24px).5— 3rem (48px).auto— auto (только margin).
Примеры:
<div class="mt-3">margin-top: 1rem</div>
<div class="p-4">padding: 1.5rem</div>
<div class="px-3">padding-left + right</div>
<div class="my-5">margin-top + bottom</div>
<div class="mx-auto">margin: 0 auto — центрирование</div>
Адаптивные:
<div class="p-2 p-md-4">2 на мобильных, 4 на планшете+</div>
Правило:
- Обычный layout — через сетку и свои классы.
- Мелкие правки — через утилиты.
Цвет текста
<p class="text-primary">Синий</p>
<p class="text-secondary">Серый</p>
<p class="text-success">Зелёный</p>
<p class="text-danger">Красный</p>
<p class="text-warning">Жёлтый</p>
<p class="text-info">Голубой</p>
<p class="text-light">Светлый</p>
<p class="text-dark">Тёмный</p>
<p class="text-body">Основной</p>
<p class="text-muted">Приглушённый</p>
<p class="text-white">Белый</p>
Фон
<div class="bg-primary">Синий</div>
<div class="bg-secondary">Серый</div>
<div class="bg-success">Зелёный</div>
<div class="bg-danger">Красный</div>
<div class="bg-warning">Жёлтый</div>
<div class="bg-info">Голубой</div>
<div class="bg-light">Светлый</div>
<div class="bg-dark">Тёмный</div>
<div class="bg-white">Белый</div>
<div class="bg-transparent">Прозрачный</div>
С прозрачностью:
<div class="bg-primary bg-opacity-10">10%</div>
<div class="bg-primary bg-opacity-25">25%</div>
<div class="bg-primary bg-opacity-50">50%</div>
<div class="bg-primary bg-opacity-75">75%</div>
Text-align
<p class="text-start">Слева</p>
<p class="text-center">По центру</p>
<p class="text-end">Справа</p>
Адаптивно:
<p class="text-center text-md-start">
Центр на мобильных, слева с md
</p>
Размеры
<div class="w-25">25%</div>
<div class="w-50">50%</div>
<div class="w-75">75%</div>
<div class="w-100">100%</div>
<div class="w-auto">auto</div>
<div class="h-25">25% height</div>
<div class="h-100">100% height</div>
<div class="mw-100">max-width: 100%</div>
<div class="mh-100">max-height: 100%</div>
<div class="min-vw-100">min-width: 100vw</div>
<div class="min-vh-100">min-height: 100vh</div>
min-vh-100 — для fullscreen-секций.
Display
<div class="d-none">Не показывать</div>
<div class="d-block">block</div>
<div class="d-inline">inline</div>
<div class="d-inline-block">inline-block</div>
<div class="d-flex">flex</div>
<div class="d-grid">grid</div>
Адаптивно:
<div class="d-none d-md-block">
Скрыт на мобильных, показан на md+
</div>
<div class="d-block d-md-none">
Показан только на мобильных
</div>
Классика для адаптива.
Flex утилиты
<div class="d-flex justify-content-between align-items-center gap-3">
<div>Логотип</div>
<div>Меню</div>
<div>Кнопка</div>
</div>
Основные:
justify-content-*— по главной оси.align-items-*— по поперечной.flex-row/flex-column— направление.flex-wrap— перенос.gap-*— отступы.flex-grow-1— растянуть.
Правило: не писать свой flex-CSS, использовать утилиты.
Границы
<div class="border">Рамка</div>
<div class="border-top">Только сверху</div>
<div class="border-0">Убрать</div>
<div class="border border-primary">Синяя</div>
<div class="border border-2">Толще</div>
<div class="rounded">Скругление</div>
<div class="rounded-0">Без</div>
<div class="rounded-3">Больше</div>
<div class="rounded-circle">Круг</div>
<div class="rounded-pill">Пилюля</div>
Тени
<div class="shadow-sm">Маленькая</div>
<div class="shadow">Обычная</div>
<div class="shadow-lg">Большая</div>
<div class="shadow-none">Без тени</div>
Позиционирование
<div class="position-relative">Относительно</div>
<div class="position-absolute">Абсолютно</div>
<div class="position-fixed">Фиксировано</div>
<div class="position-sticky">Sticky</div>
<div class="position-absolute top-0 start-0">Левый верх</div>
<div class="position-absolute top-50 start-50 translate-middle">Центр</div>
translate-middle — центрирование через transform.
Overflow
<div class="overflow-auto">Автоскролл</div>
<div class="overflow-hidden">Скрыть</div>
<div class="overflow-visible">Показать</div>
<div class="overflow-scroll">Всегда скролл</div>
Visibility
<div class="visible">Видим</div>
<div class="invisible">Скрыт, но занимает место</div>
Opacity
<div class="opacity-0">Прозрачный</div>
<div class="opacity-25">25%</div>
<div class="opacity-50">50%</div>
<div class="opacity-75">75%</div>
<div class="opacity-100">Непрозрачный</div>
Font weight и size
<p class="fw-bold">Жирный</p>
<p class="fw-semibold">Полужирный</p>
<p class="fw-normal">Обычный</p>
<p class="fw-light">Тонкий</p>
<p class="fs-1">Самый крупный</p>
<p class="fs-6">Самый мелкий</p>
Line-height
<p class="lh-1">1</p>
<p class="lh-sm">1.25</p>
<p class="lh-base">1.5</p>
<p class="lh-lg">2</p>
Практика
1. Карточка с утилитами:
<div class="card p-4 shadow-sm border rounded-3">
<h5 class="fw-bold mb-2">Заголовок</h5>
<p class="text-muted mb-3">Описание карточки</p>
<button class="btn btn-primary">Кнопка</button>
</div>
2. Hero-секция:
<section class="min-vh-100 d-flex align-items-center bg-dark text-white">
<div class="container text-center">
<h1 class="display-3 fw-bold mb-4">Заголовок</h1>
<p class="lead mb-5">Подзаголовок</p>
<a href="#" class="btn btn-primary btn-lg">Начать</a>
</div>
</section>
3. Панель с flex:
<div class="d-flex justify-content-between align-items-center p-3 border-bottom">
<div class="fw-bold">Логотип</div>
<div class="d-flex gap-3">
<a href="#" class="text-decoration-none">Ссылка 1</a>
<a href="#" class="text-decoration-none">Ссылка 2</a>
</div>
<button class="btn btn-primary btn-sm">Войти</button>
</div>
Частые ошибки
1. Утилиты для всего:
<div class="p-3 m-4 bg-primary text-white rounded shadow">
Решение: утилиты для правок. Layout — через сетку.
2. text-justify (в BS5 убрали):
Не работает
Решение: свой CSS.
3. Забыть breakpoint в адаптиве:
class="text-center" <!-- на всех размерах -->
Решение: text-center text-md-start.
4. Кастом через inline-стили:
<div style="padding: 20px">
Решение: p-4.
5. mx-auto без width:
Не центрирует
Решение: указать w-* или col.
6. min-vh-100 + p-5:
Больше 100vh
Решение: box-sizing, d-flex.
7. Z-index через утилиты:
Отдельных классов нет
Решение: свой CSS.
8. Слишком много классов в одном элементе:
<div class="d-flex justify-content-center align-items-center p-3 m-2 bg-primary bg-gradient text-white border border-2 rounded-3 shadow-lg">
Решение: свой класс через CSS/SCSS.
Итог
h1–h6— заголовки.display-1–display-6— крупные.lead— лид-абзац.- Отступы:
m-*,p-*,mt-*,px-*. - Цвета:
text-*,bg-*. - Display:
d-*,d-none d-md-block. - Flex:
d-flex justify-content-* align-items-*. - Границы:
border,rounded. - Тени:
shadow-sm,shadow,shadow-lg. - Позиционирование:
position-*,top-*. - Размеры:
w-*,h-*,min-vh-100. - Утилиты для правок, не для layout.
Дальше — кнопки, бейджи, ссылки.