📝 Html Css

Блочная модель CSS

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
2 мин
👁️
Просмотров
84
🌱
Уровень
Начальный
🐦 💼 ✈️

Каждый HTML-элемент — это прямоугольник. CSS управляет размером этого прямоугольника через четыре слоя: content, padding, border, margin. Вместе они называются блочной моделью (box model).

Четыре слоя

┌──────────────────────────────────┐
│            margin                │
│  ┌────────────────────────────┐  │
│  │          border            │  │
│  │  ┌──────────────────────┐  │  │
│  │  │       padding        │  │  │
│  │  │  ┌────────────────┐  │  │  │
│  │  │  │    content     │  │  │  │
│  │  │  └────────────────┘  │  │  │
│  │  └──────────────────────┘  │  │
│  └────────────────────────────┘  │
└──────────────────────────────────┘
  • content — сам текст или изображение. Размер задаётся через width и height.
  • padding — внутренний отступ между контентом и рамкой. Фон распространяется на padding.
  • border — рамка вокруг padding. Видима, занимает место.
  • margin — внешний отступ. Прозрачный, отделяет элемент от соседей.

Пример в CSS

.card {
  width: 300px;
  padding: 16px;
  border: 2px solid #e5e7eb;
  margin: 24px;
}
<div class="card">
  <h2>Статья про Python</h2>
  <p>Краткое описание...</p>
</div>

Проблема: width по умолчанию не включает padding и border

По умолчанию браузер считает width как ширину только контента. Padding и border добавляются сверху.

.card {
  width: 300px;
  padding: 16px;
  border: 2px solid #e5e7eb;
}
/* Реальная ширина: 300 + 16*2 + 2*2 = 336px */

Это неинтуитивно и ведёт к неожиданным сдвигам в вёрстке.

Решение: box-sizing: border-box

* {
  box-sizing: border-box;
}

С этим правилом width включает padding и border — элемент ровно такой ширины, какую вы указали.

.card {
  width: 300px;
  padding: 16px;
  border: 2px solid #e5e7eb;
}
/* Реальная ширина: 300px — ровно столько, сколько написали */

Всегда добавляйте box-sizing: border-box в начало вашего CSS. Это первое правило в любом серьёзном проекте.

Shorthand: сокращённая запись

padding и margin можно писать одной строкой:

/* Все четыре стороны одинаковые */
padding: 16px;

/* Вертикальные | горизонтальные */
padding: 8px 16px;

/* Верх | горизонтальные | низ */
padding: 8px 16px 12px;

/* Верх | право | низ | лево (по часовой) */
padding: 8px 16px 12px 0;

То же самое для margin.

Отдельные стороны

.card {
  margin-top: 24px;
  margin-bottom: 24px;
  padding-left: 16px;
  padding-right: 16px;
  border-bottom: 1px solid #e5e7eb;  /* только нижняя рамка */
}

Схлопывание margin (margin collapse)

Вертикальные margin между соседними блоками схлопываются — берётся наибольший, а не сумма.

.article-title {
  margin-bottom: 24px;
}

.article-meta {
  margin-top: 16px;
}
/* Отступ между ними: 24px, а не 40px */

Это частая причина удивления у новичков. Горизонтальные margin не схлопываются.

DevBlog: базовые правила для карточки статьи

/* Сбрасываем box-sizing для всех элементов */
*, *::before, *::after {
  box-sizing: border-box;
}

/* Карточка статьи */
.post-card {
  width: 100%;
  max-width: 680px;
  padding: 24px;
  margin-bottom: 32px;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
}

.post-card h2 {
  margin-top: 0;      /* убираем отступ сверху у первого заголовка */
  margin-bottom: 8px;
}

.post-card p {
  margin: 0;
}

Итог

Свойство Что делает Влияет на фон
padding Внутренний отступ Да
border Рамка
margin Внешний отступ Нет
box-sizing: border-box width включает padding+border

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 81
📝

Цвета и шрифты в CSS

Первое, что видит читатель DevBlog — текст. Правильно подобранные цвета и шрифты делают блог читабельным...

📅 30.06.2026 👁️ 73
📝

CSS-селекторы

Селектор — это первая часть CSS-правила. Он говорит браузеру: «применить эти стили вот к этим...

📅 30.06.2026 👁️ 77

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!