<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Что такое блочная модель в CSS: простое объяснение для верстальщиков]]></title><description><![CDATA[<p dir="auto">Блочная модель в CSS — это правила, по которым браузер рассчитывает размеры и положение элементов на странице. Каждый элемент превращается в прямоугольник с несколькими слоями: содержимое, отступы, рамки и внешние поля. Понимание этой модели помогает точно контролировать макет, избегать неожиданных сдвигов блоков и создавать responsive дизайн.</p>
<p dir="auto">Зачем это нужно? Без знаний блочной модели вёрстка выходит из-под контроля: кнопки растягиваются, отступы сливаются, а ширина контейнеров не совпадает с замыслом. Мы разберём структуру модели, ключевые свойства и типичные проблемы, чтобы вы могли сразу применять это на практике.</p>
<h2>Как устроена блочная модель</h2>
<p dir="auto">Браузер видит каждый HTML-элемент как коробку — прямоугольник с вложенными слоями. Самый внутренний слой — <strong>content</strong>, это область с текстом, изображением или другим содержимым. Её размеры задаются свойствами <code>width</code> и <code>height</code>. Вокруг content идёт <strong>padding</strong> — внутренние отступы, которые создают пустое пространство между содержимым и границей.</p>
<p dir="auto">Далее следует <strong>border</strong> — рамка, которая обрамляет padding и content. Она может быть толстой, цветной или пунктирной. Самый внешний слой — <strong>margin</strong>, внешние отступы, которые отделяют элемент от соседей. В стандартной модели общий размер элемента = content + padding + border + margin. Это приводит к сюрпризам: если задать <code>width: 200px</code> и добавить padding 20px, итоговая ширина станет 240px.</p>
<p dir="auto">Рассмотрим пример: div с текстом. Без стилей он занимает всю ширину родителя. Добавим <code>width: 300px; padding: 10px; border: 5px solid; margin: 15px</code>. Браузер посчитает ширину как 300 + 20 (padding) + 10 (border) = 330px, плюс margin снаружи.</p>
<p dir="auto">Вот структура в виде списка:</p>
<ul>
<li><strong>Content</strong>: текст или изображение, управляется <code>width</code>, <code>height</code>, <code>font-size</code>.</li>
<li><strong>Padding</strong>: внутренние отступы, <code>padding: 10px</code> добавит 10px со всех сторон.</li>
<li><strong>Border</strong>: рамка, <code>border: 2px solid black</code> рисует линию.</li>
<li><strong>Margin</strong>: внешние поля, <code>margin: 20px</code> отталкивает соседей.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Слой</th>
<th>Свойство</th>
<th>Влияние на размер</th>
</tr>
</thead>
<tbody>
<tr>
<td>Content</td>
<td><code>width</code>, <code>height</code></td>
<td>Базовый размер содержимого</td>
</tr>
<tr>
<td>Padding</td>
<td><code>padding</code></td>
<td>Добавляется внутрь элемента</td>
</tr>
<tr>
<td>Border</td>
<td><code>border</code></td>
<td>Толщина рамки входит в общий размер</td>
</tr>
<tr>
<td>Margin</td>
<td><code>margin</code></td>
<td>Снаружи, не входит в width/height</td>
</tr>
</tbody>
</table>
<h2>Свойство box-sizing и его роль</h2>
<p dir="auto">По умолчанию CSS использует <strong>content-box</strong> — стандартную модель, где <code>width</code> применяется только к content. Это часто вызывает проблемы: элемент “вздувается” при добавлении padding или border. Альтернатива — <strong>border-box</strong>: <code>width</code> включает content + padding + border. Margin остаётся снаружи.</p>
<p dir="auto">Представьте кнопку: <code>width: 200px; padding: 15px; border: 1px</code>. В content-box итог ~232px, в border-box ровно 200px — удобнее для сеток. Большинство современных проектов используют border-box глобально через <code>* { box-sizing: border-box; }</code>. Это упрощает расчёты и делает вёрстку предсказуемой.</p>
<p dir="auto">Пример кода:</p>
<pre><code class="language-css">* {
  box-sizing: border-box;
}
.button {
  width: 200px;
  padding: 15px;
  border: 1px solid;
}
</code></pre>
<p dir="auto">Здесь кнопка всегда 200px, независимо от padding.</p>
<p dir="auto">Ключевые значения:</p>
<ul>
<li><code>box-sizing: content-box</code> — стандарт, width только для content.</li>
<li><code>box-sizing: border-box</code> — width для всего внутри margin.</li>
<li><em>Примечание: margin не меняет box-sizing, всегда снаружи.</em></li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Модель</th>
<th>Width=200px + padding:20px + border:5px</th>
<th>Итоговая ширина</th>
</tr>
</thead>
<tbody>
<tr>
<td>content-box</td>
<td>200 (content)</td>
<td>230px</td>
</tr>
<tr>
<td>border-box</td>
<td>200 (всё внутри)</td>
<td>200px</td>
</tr>
</tbody>
</table>
<h2>Отступы: padding и margin в деталях</h2>
<p dir="auto"><strong>Padding</strong> создаёт пространство внутри элемента, между content и border. Оно влияет на фон: цвет или изображение растягивается до border. Используйте <code>padding: 10px 20px 10px 20px</code> для top/right/bottom/left или shorthand <code>padding: 10px 20px</code>.</p>
<p dir="auto"><strong>Margin</strong> работает снаружи, не влияет на фон элемента. Соседние margin часто <em>схлопываются</em> (margin collapse): вертикальные значения берутся максимум из двух. Горизонтальные не схлопываются. Отрицательные margin сдвигают элементы навстречу.</p>
<p dir="auto">Пример с карточкой: padding внутри для текста, margin для разделения от других карточек. В сетке 12 колонок margin помогает создать гуттеры.</p>
<p dir="auto">Правила отступов:</p>
<ul>
<li><code>padding: 0</code> убирает внутренние пробелы у инпутов.</li>
<li><code>margin: auto</code> центрирует блочные элементы по горизонтали.</li>
<li><em>Схлопывание: margin-top: 20px и margin-bottom: 30px родителя = 30px.</em></li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Свойство</th>
<th>Где применяется</th>
<th>Особенности</th>
</tr>
</thead>
<tbody>
<tr>
<td>padding</td>
<td>Внутри border</td>
<td>Входит в фон</td>
</tr>
<tr>
<td>margin</td>
<td>Снаружи</td>
<td>Может схлопываться</td>
</tr>
</tbody>
</table>
<h2>Типичные ошибки и как их избежать</h2>
<p dir="auto">Новички забывают про box-sizing: задают width контейнера, добавляют padding — и всё ломается на мобильных. Решение: всегда border-box. Ещё проблема — inline-элементы: у них margin/padding работают не полностью, игнорируя top/bottom.</p>
<p dir="auto">Блочные элементы (<code>display: block</code>) занимают всю ширину, inline — только контент. Используйте <code>display: inline-block</code> для кнопок в строке с отступами. Проверяйте в DevTools: там видно все слои модели.</p>
<p dir="auto">Частые промахи:</p>
<ul>
<li>Игнор border в расчётах ширины.</li>
<li>Схлопывание margin в вертикальном стеке.</li>
<li>Забытый box-sizing на формах.</li>
</ul>
<h2>Почему блочная модель меняет подход к верстке</h2>
<p dir="auto">Блочная модель — фундамент Flexbox и Grid, где padding/margin усиливают контроль. Она объясняет, почему старые сайты “плавают”, а современные — точны. Остаётся копнуть display: flex/grid, как они взаимодействуют с box.</p>
<p dir="auto">Дальше думайте о реальных проектах: протестируйте border-box на своём коде, поиграйтесь с margin в колонках. Это база для любого фронтендера.</p>
]]></description><link>https://forum.exlends.ru/topic/518/chto-takoe-blochnaya-model-v-css-prostoe-obuyasnenie-dlya-verstalshikov</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 04:26:06 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/518.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Feb 2026 12:38:01 GMT</pubDate><ttl>60</ttl></channel></rss>