<?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 — это основа, которая определяет, как элементы занимают место на странице. Она помогает понять размеры блоков и их взаимодействие. Зная её, вы избежите проблем с отступами и шириной.</p>
<p dir="auto">Эта модель решает типичные боли верстальщиков: блоки не влезают в контейнер, отступы сливаются или неожиданно растягиваются. Мы разберём состав, типы и свойства, чтобы вы могли точно контролировать layout.</p>
<h2>Как устроена блочная модель</h2>
<p dir="auto">Блочная модель представляет каждый элемент как прямоугольник, состоящий из нескольких слоёв. В центре — <strong>содержимое</strong> (content), где размещается текст, изображения или другие элементы. Вокруг него внутренние отступы (<strong>padding</strong>), затем граница (<strong>border</strong>) и внешние отступы (<strong>margin</strong>). Браузер рассчитывает общий размер именно по этой схеме.</p>
<p dir="auto">Представьте div с текстом: если задать <strong>width: 200px</strong>, это ширина только content. Добавьте padding 20px и border 1px — итоговая ширина станет 242px. Такие неожиданности часто ломают адаптив. Чтобы всё работало предсказуемо, важно знать, как свойства влияют друг на друга.</p>
<p dir="auto">Это подводит к ключевым компонентам. Вот они в деталях:</p>
<ul>
<li><strong>Content</strong>: базовая область для контента. Размеры задаются <strong>width</strong> и <strong>height</strong>. По умолчанию подстраивается под содержимое.</li>
<li><strong>Padding</strong>: пустое пространство внутри блока. Увеличивает размер, но не влияет на позиционирование соседей.</li>
<li><strong>Border</strong>: рамка вокруг padding. Толщина добавляется к общему размеру.</li>
<li><strong>Margin</strong>: внешние отступы. Могут сливаться (margin collapse) у блочных элементов.</li>
</ul>
<h2>Стандартная и альтернативная модели</h2>
<p dir="auto">По умолчанию CSS использует <strong>content-box</strong>: указанные <strong>width</strong> и <strong>height</strong> применяются только к содержимому. Padding и border добавляются сверху, что часто приводит к переполнению контейнера. Например, в мобильной верстке блок с padding 15px может вылезти за 100% ширины.</p>
<p dir="auto">Альтернатива — <strong>border-box</strong>: размеры включают padding и border. Это удобнее для быстрой верстки. Старые IE работали именно так, и теперь это популярный выбор. Переходите на него глобально: <code>* { box-sizing: border-box; }</code> — и жизнь станет проще.</p>
<p dir="auto">Сравним модели в таблице:</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Модель</th>
<th>Что включает width</th>
<th>Пример (width:200px, padding:20px, border:1px)</th>
<th>Когда использовать</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>content-box</strong></td>
<td>Только content</td>
<td>Итог: 242px</td>
<td>Точная работа с контентом</td>
</tr>
<tr>
<td><strong>border-box</strong></td>
<td>Content + padding + border</td>
<td>Итог: 200px</td>
<td>Адаптив, сетки</td>
</tr>
</tbody>
</table>
<p dir="auto"><em>Примечание: outline не влияет на размеры, это внешняя рамка.</em></p>
<h2>Типы элементов и display</h2>
<p dir="auto">Элементы делятся на блочные (<strong>display: block</strong>), строчные (<strong>display: inline</strong>) и строчно-блочные (<strong>display: inline-block</strong>). Блочные занимают всю ширину родителя, всегда с новой строки. Строчные текут в линию, игнорируют <strong>width/height</strong> и вертикальный <strong>margin/padding</strong>.</p>
<p dir="auto">Возьмём меню: li с <strong>inline-block</strong> идеально встанут в ряд с заданной шириной. А div с <strong>block</strong> растянется на всю строку. Неправильный display — частая причина сломанных layouts. Меняйте его осознанно.</p>
<p dir="auto">Ключевые отличия в списке:</p>
<ol>
<li><strong>Block</strong>: новая строка, полная ширина, все свойства работают.</li>
<li><strong>Inline</strong>: в строке, ширина/высота по контенту, margin/padding частично игнорируются.</li>
<li><strong>Inline-block</strong>: как inline, но уважает <strong>width/height</strong> и все отступы.</li>
</ol>
<h2>Свойства, которые меняют игру</h2>
<p dir="auto">Основные свойства — <strong>width/height</strong>, <strong>padding</strong>, <strong>border</strong>, <strong>margin</strong>. Они задаются в px, %, em, rem и т.д. <strong>Auto</strong> для width делает блок на всю ширину, <strong>0</strong> для margin убирает отступы. Отрицательные margin возможны, но осторожно — сдвигают элементы.</p>
<p dir="auto">Пример: контейнер 960px, внутри p с <strong>max-width: 60%</strong> — абзац не шире 576px. Добавьте <strong>margin: 0 auto</strong> — центрирование. Такие комбинации решают 80% задач layout.</p>
<p dir="auto">Таблица частых значений:</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Свойство</th>
<th>Пример</th>
<th>Эффект</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>padding</strong></td>
<td>padding: 20px;</td>
<td>Равномерно 20px внутри</td>
</tr>
<tr>
<td><strong>margin</strong></td>
<td>margin: 0 auto;</td>
<td>Центрирование блока</td>
</tr>
<tr>
<td><strong>border</strong></td>
<td>border: 1px solid black;</td>
<td>Рамка 1px</td>
</tr>
<tr>
<td><strong>box-sizing</strong></td>
<td>border-box</td>
<td>Удобный расчёт размеров</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>Почему это важно?</strong> Без контроля свойств блоки «плавают», особенно на разных экранах.</p>
<h2>Расчёт размеров в реальных проектах</h2>
<p dir="auto">Когда верстаете сетку, суммируйте: общая ширина = content + padding<em>2 + border</em>2 + margin*2. Для flex/grid это упрощается, но базовая модель никуда не девается. Тестируйте в DevTools — там визуализируется каждый слой.</p>
<p dir="auto">В адаптиве используйте <strong>min/max-width</strong> и проценты. Проблема: на маленьких экранах padding может сломать. Решение — медиа-запросы или clamp(). Это сохранит читаемость.</p>
<p dir="auto">Практические советы:</p>
<ul>
<li>Глобальный <strong>box-sizing: border-box</strong>.</li>
<li><strong>Margin</strong> для расстояний между блоками, <strong>padding</strong> внутри.</li>
<li>Избегайте фиксированных px в мобильной верстке — берите rem.</li>
</ul>
<h2>За рамками базовой модели</h2>
<p dir="auto">Мы разобрали основы, но блочная модель взаимодействует с Flexbox, Grid и позиционированием. Там появляются нюансы вроде <em>margin collapsing</em> только для block. Стоит углубиться в эти темы, чтобы освоить сложные layouts.</p>
<p dir="auto">Дальше думайте о производительности: слишком толстые border и padding тормозят рендер. Экспериментируйте в инструментах разработчика — это лучший способ понять, как всё работает на практике.</p>
]]></description><link>https://forum.exlends.ru/topic/503/chto-takoe-blochnaya-model-css-polnyj-razbor-dlya-verstalshikov</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:45:22 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/503.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Feb 2026 11:36:07 GMT</pubDate><ttl>60</ttl></channel></rss>