Открыть сервис

Margin в веб-дизайне и вёрстке

Margin (от англ. margin — поле, отступ) — в веб-дизайне и каскадных таблицах стилей (CSS) пространство вокруг элемента, отделяющее его от соседних элементов. В отличие от внутреннего отступа (padding), который создаёт расстояние между содержимым элемента и его границей, margin всегда располагается за пределами границы элемента и влияет на расстояние между блоками на странице.

Определение и синтаксис

В CSS свойство margin задаёт внешние отступы элемента со всех четырёх сторон. Оно относится к базовой блочной модели, разработанной консорциумом W3C. Значение свойства может задаваться в пикселях (px), процентах (%), единицах em, rem и других допустимых в CSS единицах измерения. Проценты вычисляются от ширины родительского контейнера, а не от высоты.

Синтаксис позволяет задавать отступы четырьмя способами:

  • одно значение — применяется ко всем сторонам (margin: 10px);
  • два значения — первое задаёт верхний и нижний отступ, второе — левый и правый (margin: 10px 20px);
  • три значения — верхний, левый/правый, нижний (margin: 10px 20px 15px);
  • четыре значения — по часовой стрелке: верх, право, низ, лево (margin: 10px 20px 15px 5px).

Для управления отдельными сторонами существуют свойства margin-top, margin-right, margin-bottom, margin-left. Также доступно значение auto, которое применяется для автоматического выравнивания блочных элементов по горизонтали.

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

Ключевая особенность вертикальных margin — схлопывание (collapsing margins). Когда два блочных элемента расположены друг под другом, их вертикальные отступы не суммируются, а берётся максимальное из двух значений. Например, если нижний отступ первого элемента составляет 30px, а верхний отступ второго — 20px, расстояние между элементами будет равно 30px, а не 50px.

Схлопывание также происходит между родительским и дочерним элементом, если у родителя нет границы, внутреннего отступа или иного разделителя. Это поведение часто вызывает затруднения у начинающих верстальщиков, но является стандартным механизмом CSS. Отключить схлопывание можно с помощью установки display: flow-root родителю, добавления padding или border, либо использования свойства overflow: hidden.

Отрицательные значения

CSS позволяет задавать отрицательные значения margin. Это приводит к смещению элемента в противоположную сторону и используется для создания эффекта наложения, выравнивания элементов относительно друг друга или компенсации отступов родительского контейнера. Например, отрицательный верхний отступ позволяет «приподнять» элемент над предшествующим содержимым. Отрицательные значения не схлопываются по тем же правилам, что положительные, и требуют осторожного применения для сохранения предсказуемости вёрстки.

Применение в типографике и макетировании

В веб-типографике margin используется для задания межстрочных и межабзацных интервалов. Стандартная практика — обнуление отступов у заголовков и абзацев с последующей установкой собственных значений для достижения равномерного вертикального ритма страницы.

В блочной вёрстке горизонтальные отступы с значением auto применяются для центрирования блока фиксированной ширины внутри родителя: margin: 0 auto; — классический приём выравнивания по центру. При использовании flexbox и grid-раскладки margin сохраняет свою роль для создания промежутков между элементами, хотя частично вытесняется свойствами gap и justify-content.

Margin в финансовом контексте

В финансовой сфере термин «маржа» (margin) имеет другое значение. Это разница между ценой продажи и себестоимостью товара или услуги, выраженная в денежных единицах или процентах. Валовая маржа показывает прибыльность основной деятельности компании, а чистая маржа учитывает все расходы. В трейдинге маржа — это залоговая сумма, которую инвестор вносит брокеру для открытия позиции с кредитным плечом. В банковском деле процентная маржа — разница между ставками по кредитам и депозитам. В контексте статьи «margin» в веб-дизайне финансовое значение не рассматривается подробно, но важно различать термины при переводе технической документации.

Отличие margin от padding

Разграничение внешних и внутренних отступов — основа понимания блочной модели. Padding создаёт пространство между содержимым элемента и его границей, участвует в формировании кликабельной области и фона элемента. Margin же не закрашивается фоновым цветом и не входит в область клика, он лишь раздвигает соседние блоки. Для наглядного примера: если у кнопки задать padding, то её размер увеличится и фон расширится; если задать margin, кнопка сохранит размер, но отодвинется от соседних элементов.

Особенности работы с inline-элементами

Для строчных элементов (inline), таких как <span> или <a>, горизонтальные margin применяются корректно, тогда как вертикальные отступы не влияют на высоту строки. Чтобы вертикальные отступы работали у строчного элемента, необходимо изменить его свойство display на inline-block или block. Это ограничение связано с особенностями построчного форматирования текста в CSS.

Практические рекомендации

При вёрстке страниц рекомендуется использовать единую систему отступов, например, заданную через переменные CSS или утилитарные классы. Часто применяется подход «обнуления» всех отступов через универсальный селектор (* { margin: 0; padding: 0; }) с последующей установкой нужных значений для конкретных элементов. Это позволяет избежать непредсказуемого поведения браузерных стилей по умолчанию, которые задают разные значения margin для заголовков, списков и абзацев.

Инструменты разработчика в браузерах позволяют визуально инспектировать отступы элементов, отображая их цветными областями вокруг блока. Это упрощает отладку и понимание того, как margin взаимодействует с другими элементами на странице.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →