← Все вопросы
Чем margin отличается от padding в box-model?
11
Никак не уложу в голове разницу между margin и padding — оба же про отступы. Когда брать один, а когда другой? Объясните на примере, чтобы было видно разницу.
2 ответа
15
✓ Принятый ответ — помог автору
Оба — отступы, но с разных сторон границы элемента (это и есть box-model):
padding— внутренний отступ, между содержимым и рамкой (border). Это «обивка изнутри»: фон элемента её заполняет.margin— внешний отступ, между рамкой элемента и соседями. Это «личное пространство» снаружи, фон туда не заходит.
.box {
padding: 20px; /* воздух внутри, вокруг текста */
border: 2px solid gray;
margin: 30px; /* расстояние до соседних блоков */
background: #eef;
}
Порядок слоёв изнутри наружу: content → padding → border → margin.
Как выбрать:
- хотите, чтобы текст не прилипал к краям кнопки/карточки →
padding; - хотите развести два блока друг от друга →
margin.
Две частые ловушки:
- Схлопывание margin: вертикальные внешние отступы соседей не складываются, а берётся бо́льший из двух (margin 20px + 30px дадут зазор 30px, а не 50px). С
paddingтакого нет. - По умолчанию
paddingувеличивает итоговую ширину блока — это лечитсяbox-sizing: border-box.
6
Практическое правило, которое спасает: фон и border рисуются по область padding включительно, но не включают margin. Поэтому если нужно «увеличить кликабельную область или фон» — это padding. Если нужно «просто отодвинуть» — margin. И margin умеет в auto (для центрирования), а padding — нет.
Ваш ответ
Войдите, чтобы ответить на вопрос.