Внешний отступ

Оригинальное название: margin

Коротко

Свойство CSS margin, которое задаёт прозрачное расстояние снаружи от рамки элемента и отодвигает от него соседние блоки и края родителя.

Что такое «Внешний отступ»

Внутренний отступ раздвигает содержимое и рамку, а внешний — элемент и окружающий мир. Фон элемента на margin не распространяется: это всегда пустое пространство, сквозь которое виден родитель. Место, которое элемент занимает вместе с отступами, называется боксом внешнего отступа.

Запись и полезные значения

.note  { margin: 10px 20px 30px 40px; } /* верх, право, низ, лево */
.badge { margin: 10px 20px; }           /* верх-низ, право-лево */
.container {
  max-width: 1140px;
  margin-inline: auto;         /* центрирование по горизонтали */
}
.stack > * + * { margin-block-start: 1.5em; }

Значение auto по бокам делит свободное место поровну и ставит блок с заданной шириной в центр. Логические свойства margin-inline и margin-block привязаны к направлению письма, а не к сторонам экрана: на сайте с арабским или ивритом отступы развернутся автоматически. Последнее правило ставит отступ между соседями внутри обёртки, но не над первым элементом.

Схлопывание отступов

Главная особенность margin, которая сбивает с толку. В обычном блочном потоке вертикальные отступы соседних элементов не складываются, а сливаются в один, равный большему. Заголовок с нижним отступом 20 пикселей и абзац с верхним 30 будут разделены 30 пикселями, а не 50. Ещё неожиданнее: верхний margin первого ребёнка может «вытечь» наружу родителя, если у того нет рамки, внутреннего отступа или собственного контекста форматирования. Горизонтальные отступы не схлопываются никогда, как и любые отступы у элементов внутри flex- и grid-контейнеров.

margin или gap

Для расстояний между карточками в сетке или пунктами меню удобнее свойство gap у flex- или grid-контейнера. Оно задаёт промежутки только между элементами, без лишнего отступа у краёв, и не схлопывается. Внешние отступы остаются полезны для отступов текстовых блоков, центрирования и выталкивания элемента: margin-left: auto в флекс-контейнере прижимает элемент вправо, например кнопку входа в шапке. Отрицательные значения тоже допустимы — ими, например, «вытягивают» картинку за пределы колонки текста, но злоупотреблять этим не стоит: элементы начинают перекрываться.

Обновлено:

Все термины раздела «Frontend»

Что будем искать? Например,Продвижение