Модуль 3 · Урок 11

Box model, sizing і overflow

Кожний rendered element створює boxes. Щоб пояснити «чому ширше за container», рахуйте content, padding і border, перевіряйте box-sizing та normal flow, а не маскуйте проблему глобальним overflow hidden.

ContentPadding + borderborder-boxOverflow

Чотири шари box model

AreaЩо міститьВходить у border box
ContentText/replaced contentТак
PaddingВнутрішній простір навколо contentТак
BorderМежа padding boxТак
MarginЗовнішній простір між boxesНі

Для width: 300px; padding: 20px; border: 2px у content-box border box = 344px. У border-box declared width 300px уже включає padding і border.

Block, inline та inline-block

BlockПочинає новий line у normal flow; auto inline size зазвичай заповнює available space.
InlineТече всередині line boxes; width/height і vertical margins не працюють як у block.
Inline-blockЗовні бере участь в inline flow, всередині має block box behavior.
Normal flowBaseline layout до Flexbox/Grid/positioning; його треба розуміти, а не «обнуляти».

Overflow — symptom із причиною

ПричинаEvidenceResilient fix
width:100% + padding у content-boxBorder box ширший parentborder-box або auto width
Довгий unbreakable tokenScroll width росте через textoverflow-wrap:anywhere за змістом
Fixed width/heightContent не поміщається після resizemin/max/auto sizing
Справді двовимірні даніTable потребує обох axesЛокальний scroll container із label

overflow:hidden може обрізати потрібний content і focus indicators. Використовуйте його лише коли clipping є усвідомленою частиною design.

Практика

  1. Обчисліть три cases у box-model-calculations.csv.
  2. Підтвердьте числа у DevTools Box Model.
  3. Виправте page-level overflow без приховування body overflow.
  4. Перевірте long token, 200% text і 320 CSS px.

Офіційні джерела

Практична перевірка · урок 11 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що входить у border box?
2. Чи входить margin у declared border-box width?
3. Яка border-box width для content-box width300, padding20 з обох боків і border2 з обох?