Padding в CSS

Как работают внутренние отступы в вёрстке

Padding в CSS

Padding в CSS — это внутренние отступы, которые создают пространство между содержимым элемента и его границей. Они делают интерфейс более удобным, читаемым и эстетичным, а также помогают управлять размерами и расположением элементов.

Сегодня разберём, как работает инструмент padding, как правильно его использовать и какие трюки с ним можно провернуть — от адаптивных отступов до создания пропорциональных блоков без JavaScript.

Обзор

Вёрстка — это не просто расстановка элементов на странице, а ещё и управление пространством между ними. Именно отступы делают интерфейс удобным и сбалансированным, а padding — один из главных инструментов для этого.

Каждый элемент на веб-странице — это блок, у которого есть несколько слоёв. Они формируют бокс-модель — систему, которая определяет, как рассчитываются размеры элементов:

  • Содержимое (content) — текст, картинка или что-то ещё внутри элемента.
  • Padding — внутренний отступ, который создаёт пространство между контентом и границей (border).
  • Border — рамка вокруг элемента (может быть нулевой, но технически она всегда есть).
  • Margin — внешний отступ, который создаёт пространство между этим элементом и другими. Про него поговорим подробно в следующий раз.

Padding в CSS

Главное отличие padding от margin в том, что padding работает внутри элемента, а margin — снаружи, отделяя элементы друг от друга.

Чтобы лучше понять, как это всё устроено, можно открыть DevTools в браузере и изучить какой-то конкретный элемент:

  • Правый клик → Inspect (просмотреть код).
  • В панели Elements выбрать нужный элемент.
  • Внизу (или справа) будет бокс-модель, где наглядно показаны padding, margin и border.

Padding элемента можно менять прямо в DevTools и сразу видеть, как он влияет на страницу — padding будет подсвечиваться зелёным:

Padding в CSS

С бокс-моделью разобрались, теперь посмотрим, как это всё работает в реальности.

Что такое Padding в CSS

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

Padding в CSS
Элемент с паддингом и без

Тогда к элементу применяют свойство padding, которое создаёт пространство внутри элемента, отделяя его содержимое от границ (border).

В дизайне padding очень важен, поскольку:

  • Делает текст более читаемым, создавая вокруг него «воздух».
  • Улучшает внешний вид элементов, делая их визуально сбалансированными.
  • Увеличивает площадь клика у кнопок и ссылок, что особенно важно для мобильных устройств.

Даже если у элемента не задана ширина и/или высота, padding всё равно создаст пространство внутри блока.

Например:

.text-block {
  background-color: #f4f4f4;
  padding: 20px;
  font-size: 16px;
}
Padding в CSS

Здесь padding в 20 пикселей создаёт вокруг текста «подушку» (выделено серым), которая делает текст удобнее для восприятия.

👉 Важный нюанс: padding может увеличивать размер элемента. Поэтому если у элемента задана ширина, например 400 пикселей:

.box {
  width: 400px;
  padding: 20px;
}

то его фактическая ширина будет 440 пикселей (400px + 20px слева + 20px справа):

Padding в CSS

Так происходит, потому что по умолчанию браузеры считают, что width — это размер только контента, а padding добавляется сверху.

Вам может быть интересно:

Синтаксис

Padding можно записывать разными способами, в зависимости от того, какие стороны элемента нужно отодвинуть от контента. Можно указать от 1 до 4 значений:

  • Если 1 значение → применяется ко всем сторонам.
  • Если 2 значения → top-bottom | left-right.
  • Если 3 значения → top | left-right | bottom.
  • Если 4 значения → top | right | bottom | left.

Каждое значение padding может быть фиксированным числом (px, em, rem, vh, vw и так далее) или процентом. Значение не может быть отрицательным. Если случайно написать padding: -10px, браузер просто проигнорирует это свойство.

Например, есть контейнер с такими паддингами:

.box {
  padding: 1rem 2.5rem 1rem 1rem;
}
Padding в CSS

Здесь padding задан в rem (то есть относительных единицах), что делает отступы адаптивными для масштабирования. Значения заданы так:

  • 1rem сверху;
  • 2.5rem справа;
  • 1rem снизу;
  • 1rem слева.

Так как rem зависит от размера шрифта корневого элемента <html>, то отступы подстроятся под настройки браузера. Если по умолчанию 1rem = 16px, то здесь padding сверху и снизу будет 16px, а справа 40px.

Пример с процентными значениями

Padding можно задавать в процентах, но есть нюансы:

  • Проценты по горизонтали — считаются от ширины блока.
  • Проценты по вертикали — тоже считаются от ширины блока (а не от высоты, как можно было бы подумать).

Почему так? Потому что ширина блока зафиксирована браузером, а высота меняется в зависимости от содержимого.

Можно комбинировать процентные значения с фиксированными:

padding: 10px 5%;

Здесь сверху и снизу будет 10px, а слева и справа — 5% от ширины блока. Удобно для адаптивности.

Примеры с разными значениями

Устанавливаем отступ 20px со всех четырёх сторон (сверху, снизу, слева, справа):

/* с одним значением */
.box {
  /* все отступы одинаковые */
  padding: 20px; 
}
Padding в CSS
/* с двумя значениями */
.box {
/* 10px сверху и снизу, 20px слева и справа */
  padding: 10px 20px; 
}
Padding в CSS
/* с тремя значениями */
.box {
/* 10px сверху, 20px слева и справа, 30px снизу */
  padding: 10px 20px 30px; 
}
Padding в CSS
/* с четырьмя значениями */
.box {
/* 10px сверху, 15px справа, 20px снизу, 25px слева */
  padding: 10px 15px 20px 25px; 
 }
Padding в CSS

Свойства Padding

В padding можно управлять отступами по каждой стороне отдельно, используя следующие свойства:

.box {
 /* Отступ сверху */
 padding-top: 10px;
 /* Отступ справа */
 padding-right: 20px;
 /* Отступ снизу */
 padding-bottom: 15px;
 /* Отступ слева */
 padding-left: 5px;
}
Padding в CSS

Можно комбинировать эти свойства, но обычно их заменяют сокращённой записью, где можно указать 1–4 значения. При этом отдельные свойства используют:

  • Когда отступы по разным сторонам сильно отличаются.
  • Когда нужно менять только один padding, не затрагивая остальные.
  • В медиазапросах, когда нужно адаптировать только один из отступов.

Сокращённое свойство Padding

Когда мы записываем padding одним, двумя, тремя или четырьмя значениями — это и есть сокращённая запись.

.box {
 /* Одно значение — для всех сторон */
 padding: 20px;
 /* Два значения — top/bottom, left/right */
 padding: 10px 20px;
 /* Три значения — top, left/right, bottom */
 padding: 10px 15px 20px;
 /* Четыре значения — top, right, bottom, left */
 padding: 5px 10px 15px 20px;
}

Такое сокращение заменяет длинную запись, где мы явно указываем сторону:

.box {
  padding-top: 10px;
  padding-right: 15px;
  padding-bottom: 20px;
  padding-left: 15px;
}
Padding в CSS

Значения Padding

Padding может принимать следующие значения:

  • Фиксированные (px) — если нужен жёстко заданный отступ, который не изменится при масштабировании.
  • Процентные (%) — адаптируются к ширине родителя.
  • Относительные (em, rem) — масштабируются вместе со шрифтом.
  • calc() — даёт динамичные отступы, комбинируя разные единицы.
  • inherit, initial, unset — позволяют управлять паддингами более гибко при наследовании.

Рассмотрим подробнее.

Пиксели (px) — это фиксированные отступы. Они дают точный размер, не зависящий от шрифтов или других элементов, и в вёрстке используются чаще всего.

.box {
  padding: 20px;
}

Проценты (%) — это относительные отступы. Они задают padding в процентах от ширины родительского элемента (даже если речь про padding-top или padding-bottom). Их используют в адаптивных макетах, чтобы отступ подстраивался под размер контейнера.

.box {
  padding: 5%;
}

Значения em и rem — это масштабируемые отступы. Значение em зависит от размера шрифта элемента, а rem — от размера шрифта html (по умолчанию 16px). Их используют, когда padding должен масштабироваться вместе с текстом:

.box {
/* 2x размер шрифта элемента */
  padding: 2em; 
}

Для гибкости можно смешивать единицы измерения, используя функцию calc(). Допустим, нам нужен фиксированный минимум (10px), но при этом отступ должен немного увеличиваться в зависимости от контейнера (2%), тогда можно сделать так:

.box {
  padding: calc(10px + 2%);
}

Наследование Padding от родительского элемента

Padding не наследуется автоматически. Но если нужно, чтобы padding у элемента был таким же, как у его родителя, то пишем так:

.child {
  padding: inherit;
}

Так делают, когда padding у родителя уже настроен и нет смысла дублировать значения.

Кроме этого, есть ещё 2 других значения для настройки Padding: initial и unset.

Если нужно убрать все заданные padding и вернуть стандартное поведение, то сбрасываем padding к значению по умолчанию (обычно 0) через initial:

.child {
  padding: initial;
}

Если же мы не знаем заранее, наследуется padding или нет, но хотим сбросить его поведение, то используем unset. Тогда, если padding наследуемый, он наследуется. Если нет — сбрасывается к initial:

.child {
  padding: unset;
}

Советы по использованию Padding

👉 Чтобы padding не увеличивал размеры элемента, используйте box-sizing: border-box;. Если добавить box-sizing: border-box, то width будет учитывать padding внутри себя, и элемент не будет «раздуваться». В современных проектах box-sizing: border-box; ставят для всех элементов по умолчанию:

* {
  box-sizing: border-box;
}

👉 Разные браузеры добавляют свои отступы к элементам, например у списков (ul), заголовков (h1) и форм. Поэтому можно использовать normalize.css, который сбрасывает нестандартные стили и делает padding предсказуемым:

<link rel=”stylesheet” href=”https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css”>

👉 Если кнопка без отступов, она выглядит сжатой и неудобной. Лучше делать их не менее 10px по вертикали — так будет удобнее для клика, особенно на мобильных устройствах. Особенно это важно в кнопках, ссылках, интерактивных элементах: чем больше внутренний отступ, тем удобнее попадать мышкой и пальцем.

.button {
  padding: 12px 24px;
}

👉 Значения padding можно задавать в процентах, и это суперполезно для адаптива.

.container {
  width: 80%;
  padding: 5%;
}

Здесь padding: 5% будет пропорционален ширине родителя, а не жёстко заданным пикселям. Удобно для отзывчивых каруселей, карточек, изображений, где нужно сохранять пропорции.

Примеры применения Padding

👉 Кроме увеличения кликабельной области кнопки, паддинг используют в ссылках. Иногда текст ссылки маленький, и кликать по ней неудобно, особенно на мобилках. Тогда оступ может сделать её более доступной, даже если текст короткий.

<a href="#" class="link">Ссылка 🐻</a>
.link {
  padding: 10px;
  display: inline-block;
  background-color: #f4f4f4;
  text-decoration: none;
  border-radius: 5px;
}

Сам текст ссылки короткий, но кликабельная зона (выделено серым), увеличивается за счёт паддинга:

Padding в CSS

👉 Можно использовать padding для динамичного увеличения области вокруг текста. Это поможет, если заголовок должен адаптироваться под размер экрана.

.responsive-title {
  font-size: 2rem;
/* Отступы зависят от ширины экрана */
  padding: 2vw; 
  background: #ffcc00;
  text-align: center;
}

Здесь padding: 2vw; означает, что отступы будут увеличиваться или уменьшаться вместе с шириной экрана. Это позволяет адаптировать текстовый блок без жёстких фиксированных значений.

Padding в CSS

👉 Обычно padding используют для создания отступов внутри элемента, но есть и хитрый способ его применения — сохранение пропорций (aspect ratio) для адаптивного дизайна.

Вот как это сделать.В первую очередь высоту адаптивного блока ставим в 0, чтобы исключить влияние других параметров. Затем задаём padding-bottom в процентах — и его значение будет рассчитываться от ширины контейнера. Таким образом высота элемента автоматически подстраивается под ширину, сохраняя пропорции.

 /* Адаптивный блок с соотношением 16 : 9 */
.aspect-box {
/* Занимает всю ширину родителя */
  width: 100%; 
/* Обнуляем высоту */
  height: 0; 
  /* 9 / 16 * 100% = 56.25% */
  padding-bottom: 56.25%; 
  background: lightblue;
  position: relative;
}

Значение padding-bottom: 56.25% — это то, что создаёт высоту, пропорциональную ширине.

Но есть нюанс: весь контент прижимается вверх, поэтому внутри нужен дополнительный блок с position: absolute, который его центрирует:

.content {
 /* Размещаем .content относительно .aspect-box */
 position: absolute;
 /* Прижимаем к верхней границе */
 top: 0;
 /* Прижимаем к левой границе */
 left: 0;
 /* Растягиваем по всей ширине родителя */
 width: 100%;
 /* Растягиваем по всей высоте родителя */
 height: 100%;
 /* Включаем flexbox для центрирования */
 display: flex;
 /* Центрируем содержимое по вертикали */
 align-items: center;
 /* Центрируем содержимое по горизонтали */
 justify-content: center;
}
Padding в CSS

В итоге такое решение работает без JavaScript и его можно использовать для видео, изображений, карточек и любых контейнеров.

Совместимость с браузерами

Padding поддерживается во всех браузерах, включая Chrome, Firefox, Safari, Edge и IE. Это одно из самых стабильных CSS-свойств, с которым практически нет кросс-браузерных проблем.

Padding в CSS

Спецификации

Padding — это часть CSS Box Model, определяющей, как рассчитываются размеры элементов на странице. Он подробно описан в официальной спецификации CSS Level 2 и CSS Box Model Level 3. Почитать можно здесь:

  • MDN: padding — справка с примерами.
  • CSS Box Model (W3C) — официальная спецификация W3C.
  • CSS Logical Properties — современный подход, заменяющий padding-left/right/top/bottom на padding-inline и padding-block.

Вам слово

Приходите к нам в соцсети поделиться своим мнением об отступах и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте: шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!

Обложка:

Алексей Сухов

Корректор:

Елена Грицун

Вёрстка:

Кирилл Климентьев

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
А вы читали это?
easy