Внешние отступы (margin) в CSS
Вы красите коробку, рисуете границу и скругляете углы. Следующий навык: отодвинуть коробки друг от друга. margin — внешний зазор вокруг элемента — воздух снаружи границы.
Что такое margin?
Margin — пустое пространство снаружи границы элемента. Он отделяет одну коробку от соседей. Он не заливает фон элемента в этот зазор — зазор вне залитой области.
Margin против padding (короткий контраст)
Padding (следующий урок) — внутри границы, между содержимым и краем. Margin — снаружи границы, между этой коробкой и следующей. Если запомните одну строку сегодня: margin = снаружи, padding = внутри.
Сокращение: сколько значений?
Можно передать одну, две, три или четыре длины. Порядок сторон фиксирован.
📊 Число значений сокращения margin
| Значения | Смысл | Повседневная заметка |
|---|---|---|
| 1 | Все четыре стороны одинаковы | Равный «воздух» вокруг карточки |
| 2 | Верх+низ, затем лево+право | Вертикальная и горизонтальная пары |
| 3 | Верх, лево+право, низ | Реже — знайте, что существует |
| 4 | Верх, право, низ, лево | Полный контроль, по часовой сверху |
Одинаковый отступ на каждой стороне
Начните с одной длины для всех сторон.
Одинаковый margin на всех сторонах
css.card {
margin: 16px;
border: 1px solid #cbd5e1;
padding: 1rem;
background-color: #ffffff;
}
Два значения — вертикаль, потом горизонталь
Две длины связывают противоположные стороны: сначала верх и низ; затем лево и право.
Вертикальный затем горизонтальный margin
css.panel {
margin: 24px 12px;
border: 1px solid #94a3b8;
padding: 1rem;
background-color: #f8fafc;
}
Четыре значения — по часовой сверху
Когда каждой стороне нужен свой зазор: верх → право → низ → лево.
Четырёхстороннее сокращение margin
css.note {
margin: 8px 20px 32px 20px;
border: 1px solid #0f766e;
padding: 0.75rem;
background-color: #ecfdf5;
}
Центрировать блок через auto
Для блочной коробки с заданной шириной margin-left: auto и margin-right: auto (часто margin: 0 auto) делят оставшееся место поровну — классический способ центрировать по горизонтали.
Горизонтальное центрирование через auto
css.box {
width: 280px;
margin: 0 auto;
border: 2px solid #0f766e;
padding: 1rem;
background-color: #f0fdfa;
}
Вертикальные margin могут схлопываться
Когда два блочных элемента стоят друг над другом, нижний margin первого и верхний второго часто схлопываются (collapse) в один зазор — обычно больший из двух, не сумма. Это удивляет новичков; ждите этого между абзацами и секциями.
Сложенные блоки со схлопыванием margin
css.block-a {
margin-bottom: 24px;
background-color: #ccfbf1;
padding: 0.5rem;
}
.block-b {
margin-top: 24px;
background-color: #99f6e4;
padding: 0.5rem;
}
/* Между ними часто видно около 24px, не 48px */
Одна сторона за раз
Длинные формы вроде margin-top идеальны, когда нужен только отступ над заголовком или под кнопкой.
Только верхний margin
css.section-title {
margin-top: 2rem;
margin-bottom: 0.5rem;
margin-left: 0;
margin-right: 0;
}
Попробуйте сами
- Дайте двум карточкам
margin: 16pxи посмотрите внешний зазор. - Перепишите одну как
margin: 24px 12pxи заметьте вертикаль vs горизонталь. - Отцентрируйте коробку шириной 280px через
margin: 0 auto. - Сложите два цветных блока с
margin-bottomиmargin-topпо24px— зазор похож на 24 или 48? - Отступите заголовок только через
margin-top.
Частые ошибки
- Использовать margin, когда нужен был padding (внутренняя подушка для текста)
- Ждать, что
margin: autoцентрирует каждый flex/grid-элемент как простой блок (важен контекст вёрстки) - Складывать верхний и нижний margin и считать, что они всегда суммируются (collapse может уменьшить зазор)
- Огромные margin везде вместо маленькой согласованной шкалы
- Путать порядок четырёх значений (верх, право, низ, лево)
Кратко
- Margin — внешний простор снаружи границы
- Сокращение: 1, 2 или 4 значения (четыре по часовой сверху)
margin: 0 autoцентрирует блок с шириной по горизонтали- Вертикальные margin между сложенными блоками могут схлопываться
- Для одной стороны используйте длинные свойства
- Padding — внутренний родственник — следующий урок
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху