Свойство CSS margin
Свойство CSS margin — сокращение для margin-bottom, margin-top, margin-left, margin-right. Значения свойства и примеры использования.
Свойство CSS margin создаёт пространство снаружи границы элемента — зазор между этим элементом и его соседями. В отличие от padding, который добавляет пространство внутри границы, margin отталкивает соседний контент от элемента.
На этой странице рассматривается сокращённый синтаксис, принцип записи от одного до четырёх значений, центрирование с помощью auto, отрицательные отступы и правило схлопывания отступов, которое удивляет большинство новичков.
Для чего margin является сокращением
Свойство margin является сокращением, которое устанавливает все четыре индивидуальных свойства сторон одним объявлением:
Принцип записи от одного до четырёх значений
Поскольку margin является сокращением, количество указанных значений определяет, к каким сторонам они применяются. Значения всегда идут по часовой стрелке, начиная сверху (верх → правая → низ → левая):
- Четыре значения —
margin: 25px 10px 15px 20px;устанавливает: сверху25px, справа10px, снизу15px, слева20px. - Три значения —
margin: 15px 10px 20px;устанавливает: сверху15px, справа и слева10px, снизу20px. - Два значения —
margin: 15px 10px;устанавливает: сверху и снизу15px, справа и слева10px. - Одно значение —
margin: 15px;применяет15pxко всем четырём сторонам.
Удобный мнемонический приём для формы с четырьмя значениями — слово TRouBLe (Top, Right, Bottom, Left).
Отрицательные значения допустимы.
| Начальное значение | 0 |
|---|---|
| Применяется к | Всем элементам. |
| Наследуется | Нет. |
| Анимируемое | Да. Margin является анимируемым. |
| Версия | CSS1 |
| DOM Syntax | Object.style.margin = "20px 10px"; |
Синтаксис
Синтаксис свойства CSS margin
margin: length | auto | initial | inherit;Пример свойства margin:
Пример свойства CSS margin с четырьмя значениями
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p {
background-color: #1c87c9;
color: #fff;
margin: 25px 10px 15px 20px;
}
</style>
</head>
<body>
<h2>Margin property example</h2>
<p>Paragraph with background-color, color and margin properties.</p>
</body>
</html>Результат
Пример свойства margin, где отступ элемента задан в 10% для всех сторон:
Пример свойства CSS margin со значением % (процент)
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p.example {
margin: 10%;
}
</style>
</head>
<body>
<h2>Margin property example</h2>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
<p class="example">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
</body>
</html>Пример свойства margin, определённого в единицах «em»:
Пример свойства CSS margin со значением em
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p.example {
margin: 4em;
}
</style>
</head>
<body>
<h2>Margin property example</h2>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
<p class="example">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
</body>
</html>Рассмотрим следующий пример, который демонстрирует разницу между свойствами margin, padding и border:
Пример свойства margin вместе со свойствами padding и border:
Пример свойства CSS margin с одним значением (px)
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
div {
background-color: #eee;
width: 200px;
border: 20px solid #8ebf42;
padding: 30px;
margin: 55px;
}
</style>
</head>
<body>
<h2>Margin property example</h2>
<div>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>
</body>
</html>Центрирование блока с помощью margin: auto
Установка левого и правого отступов в auto — это классический способ горизонтально центрировать блочный элемент с явно заданной шириной. Браузер делит оставшееся горизонтальное пространство поровну между двумя сторонами:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.box {
width: 300px;
margin: 0 auto;
background-color: #1c87c9;
color: #fff;
padding: 20px;
}
</style>
</head>
<body>
<div class="box">I am centered horizontally.</div>
</body>
</html>margin: 0 auto; означает нулевые отступы сверху и снизу и auto слева и справа. Обратите внимание, что auto центрирует только по горизонтали — вертикальное центрирование оно не обеспечивает. Для вертикального центрирования используйте Flexbox или Grid.
Отрицательные отступы
Отступы принимают отрицательные значения, которые притягивают элемент к соседнему (или выводят его за пределы контейнера), а не отталкивают от него. Это полезно для перекрытия элементов или смещения элемента за пределы внутреннего отступа родителя:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.second {
margin-top: -20px;
background-color: #8ebf42;
color: #fff;
padding: 10px;
}
</style>
</head>
<body>
<p>First paragraph.</p>
<p class="second">This paragraph is pulled up to overlap the one above.</p>
</body>
</html>Схлопывание отступов
Когда верхний и нижний отступы двух блочных элементов встречаются по вертикали, они не суммируются — вместо этого они схлопываются в единый отступ, равный большему из двух. Таким образом, абзац с margin-bottom: 30px;, за которым следует абзац с margin-top: 20px;, создаёт между ними зазор в 30px, а не 50px.
Значения
| Значение | Описание | Пример |
|---|---|---|
| auto | Устанавливает отступ. Это значение по умолчанию для данного свойства. | Play it » |
| length | Определяет отступ в px, pt, cm и т.д. Значение по умолчанию — 0. | Play it » |
| % | Задаёт отступ в % от содержащего элемента. | Play it » |
| initial | Устанавливает свойство в его значение по умолчанию. | Play it » |
| inherit | Наследует свойство от родительского элемента. |