Блочная модель
Задай блоку width: 200px, внутренний отступ 16px и рамку 2px, и по умолчанию он займёт на экране 236 пикселей в ширину, а не 200.
Каждый элемент является блоком
Чтобы разметить страницу, браузер превращает каждый элемент в прямоугольник. У каждого блока четыре слоя, изнутри наружу. Область содержимого содержит текст или изображение. Внутренний отступ (padding) является пространством внутри блока между содержимым и рамкой, и у него цвет фона блока. Рамка (border) является линией вокруг внутреннего отступа. Внешний отступ (margin) является пространством снаружи рамки, которое отталкивает другие блоки; он всегда прозрачный. Инструменты разработчика в браузере рисуют именно такую схему, когда ты изучаешь элемент, и подставляют числа.
Сокращённая запись для четырёх сторон
padding, margin и border-width принимают от одного до четырёх значений, по часовой стрелке начиная сверху. padding: 16px задаёт все четыре стороны. padding: 8px 16px задаёт сверху и снизу 8, а слева и справа 16. padding: 4px 8px 12px 16px задаёт верх, правую сторону, низ и левую сторону именно в таком порядке. Каждую сторону можно задать и отдельно, как в margin-top. border: 2px solid #333 задаёт ширину, стиль и цвет сразу; без стиля, например solid или dashed, рамка вообще не рисуется.
box-sizing: настройка, которую меняют почти все
По умолчанию width и height задают размер только области содержимого, а внутренний отступ и рамка добавляются сверху. Это модель content-box, и с ней неудобно верстать: два блока width: 50% с любым внутренним отступом уже не помещаются рядом. С box-sizing: border-box ширина включает внутренний отступ и рамку, а область содержимого сжимается, чтобы освободить место. Многие таблицы стилей начинаются с того, что применяют это ко всем элементам: *, *::before, *::after { box-sizing: border-box; }.
Блочные и строчные блоки
Блоки ведут себя по-разному в зависимости от значения display. Блочные элементы, например p, h1 и section, начинаются с новой строки и растягиваются на всю ширину контейнера. Строчные элементы, например a, strong и span, стоят внутри строки текста; width и height к ним не применяются, а их вертикальные внутренние и внешние отступы не отодвигают другие строки. display: inline-block находится посередине: блок идёт внутри строки как слово, но учитывает ширину, высоту и внутренний отступ, это подходит для маленьких меток и кнопок.
Схлопывающиеся отступы
Одно правило удивляет почти всех. Когда нижний внешний отступ одного блока встречается с верхним внешним отступом следующего, они не складываются: побеждает больший. Абзац с margin-bottom: 20px, за которым идёт заголовок с margin-top: 30px, окажется на расстоянии 30 пикселей, а не 50. Это называется схлопыванием внешних отступов, и оно бывает только у вертикальных отступов между блоками в обычном потоке, но не внутри flex- или grid-контейнеров. Чтобы выровнять блок по центру по горизонтали, задай ему width или max-width и margin: 0 auto: два автоматических боковых отступа поровну делят свободное место.
outline: none, замени его другим заметным стилем фокуса.| область содержимого | Где находятся текст и изображения |
| внутренний отступ (padding) | Пространство внутри рамки; на нём виден фон |
| рамка (border) | Линия вокруг внутреннего отступа; нужен стиль |
| внешний отступ (margin) | Прозрачное пространство снаружи рамки |
| box-sizing: border-box | ширина включает внутренний отступ и рамку |
| схлопывание внешних отступов | Соприкасающиеся вертикальные отступы: побеждает больший |
| inline-block | Идёт в строке, но учитывает ширину и внутренний отступ |
- Расположи слои изнутри наружу.
- content-box: ширина 300px, внутренний отступ 20px, рамка 5px. Общая ширина?
- border-box: ширина 300px, внутренний отступ 20px, рамка 5px. Какова ширина области содержимого?
- Что задаёт
margin: 10px 20px?- 10 сверху и снизу, 20 слева и справа
- 10 слева и справа, 20 сверху и снизу
- 10 сверху, 20 снизу
padding: 1px 2px 3px 4px: сколько слева?- margin-bottom 20px встречается с margin-top 30px. Каков промежуток?
- Почему
border: 2px #333ничего не рисует?- Нет стиля рамки, например solid
- Цвет слишком тёмный
- Рамке нужен внешний отступ
- Какое значение display позволяет span получить ширину и вертикальный внутренний отступ, оставаясь в строке?
- inline-block
- inline
- none
- Как выровнять по центру по горизонтали блок шириной 600px?
- margin: 0 auto
- padding: auto
- text-align: center on the block
- Какая часть блока показывает цвет фона?
- Содержимое и внутренний отступ (и под рамкой)
- Только содержимое
- Ещё и внешний отступ
- Содержимое, внутренний отступ, рамка, внешний отступ.
- content-box добавляет внутренний отступ и рамку к ширине; border-box включает их.
- Сокращённая запись идёт по часовой стрелке сверху; соприкасающиеся вертикальные отступы схлопываются.
Источники курса (6)
- W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
- MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
- W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
- W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
- 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
- every code exercise checked with a Playwright probe against a reference solution.
Проверено: 2026-10-17