Как сделать отступы в CSS
Отступов в CSS три вида — выберите по задаче:
| Задача | Свойство |
|---|---|
| отодвинуть блок от соседей | margin (внешний отступ) |
| отодвинуть текст от края блока, рамки, фона | padding (внутренний отступ) |
| промежутки между элементами во Flexbox и Grid | gap |
.card {
padding: 16px;
margin-bottom: 24px;
}
.cards {
display: flex;
gap: 20px;
}По сторонам
Каждой стороне — своё свойство: margin-top, margin-right, margin-bottom, margin-left (так же у padding). Или одной строкой:
.a { margin: 10px; }
.b { margin: 10px 20px; }
.c { margin: 10px 20px 30px; }
.d { margin: 10px 20px 30px 40px; }- одно значение — со всех сторон;
- два — сверху и снизу, затем слева и справа;
- три — сверху, по бокам, снизу;
- четыре — сверху, справа, снизу, слева (по часовой стрелке).
margin: 0 auto — сверху и снизу 0, а слева и справа поровну: так блок с шириной встаёт по центру.
Частые задачи
Убрать отступы у страницы и списков — браузер ставит их сам:
body {
margin: 0;
}
ul {
margin: 0;
padding: 0;
}Расстояние между абзацами — margin у <p>:
p {
margin: 0 0 1em;
}1em — высота шрифта абзаца: расстояние растёт вместе с размером текста.
Красная строка — отступ первой строки абзаца, text-indent:
p {
text-indent: 1.5em;
}Отступы между элементами без лишнего в конце — gap у флекс- или грид-контейнера. С margin-right у каждого элемента последний тоже получит отступ, и ряд съедет; gap ставит промежутки только между элементами.
Отступ «не работает»
- Между блоками расстояние меньше суммы отступов — вертикальные
marginсоседних блоков схлопываются: от 20 и 30 пикселей остаются 30. Подробно — в уроке Блочная модель. margin-topпервого элемента сдвинул весь родительский блок — отступ «вылез» наружу. Замените его наpadding-topу родителя.- У ссылки или
<span>не работает отступ сверху и снизу — это строчные элементы. Дайте имdisplay: inline-blockилиdisplay: block. - Блок с
paddingстал шире, чем задано — включитеbox-sizing: border-box, тогдаpaddingвходит вwidth. - Отступ задан, но его перебивает другое правило — проверьте элемент в инструментах разработчика (
F12): там и схема отступов блока, и зачёркнутые перебитые объявления.
Отступы удобно задавать в rem (от размера шрифта страницы) — тогда при увеличении шрифта в браузере они растут вместе с текстом. Отрицательный margin тоже допустим: он сдвигает блок в обратную сторону, но пользуйтесь им аккуратно — блоки начнут налезать друг на друга.