HTML + CSS
  • 🧑‍💻Full-Stack Web Developer
  • ‼️Список корисних ресурсів
  • 📚Теорія
    • 1️⃣HTML
      • Введення в веб-розробку
      • Теги та атрибути
      • Скелет документа HTML
      • Семантика
      • Розмітка тексту
      • Розмітка тексту (2 частина)
      • Зображення
      • Структура HTML-документа
      • Таблиці
      • Символьні підстановки
      • Таблиця кодів символів
      • Відео та аудіо
      • Інструменти розробника
      • Валідація
    • 2️⃣CSS та селектори
      • CSS
      • Селектори
      • Псевдокласи стану
      • Колір
      • Каскад стилів
      • CSS-змінні
      • Одиниці вимірювання
      • Стилізація тексту
      • Властивості шрифту
      • Псевдоелементи тексту
      • Підключення сторонніх шрифтів
    • 3️⃣Блокова модель
      • Основи блокової моделі
      • Геометрія елемента
      • Типи елементів
      • Структурні псевдокласи
    • 4️⃣Flexbox
      • Концепції
      • Властивості контейнера
      • Властивості елемента
    • 5️⃣Grid
    • 6️⃣Зображення і декор
      • Типи зображень
      • Фон елемента
      • Властивості object-fit і object-position
      • Псевдоелементи
      • Градієнт
      • Тінь елемента
    • 7️⃣Векторна графіка
      • Що таке векторна графіка
      • SVG-елементи
      • SVG-документ
      • Використання векторної графіки
      • Зміна властивостей в SVG
    • 8️⃣Позиціонування
      • Позиційовані елементи
      • Властивість z-index
      • Властивість overflow
    • 9️⃣Переходи і анімація
      • CSS-переходи
      • CSS-анімація
      • 2D-трансформації
      • Перспектива
    • 🔟Форми
      • Для чого потрібні форми
      • Елемент <form>
      • Елемент <label>
      • Елемент <input>
      • Елемент <textarea>
      • Елемент <select>
      • Елемент <datalist>
      • Групування полів
      • Валідація форм
      • Валідація на клієнті
      • Псевдокласи стану
    • 🐭Адаптивна верстка
      • Медіа-запити
      • Метатег viewport
      • Інструменти розробника для адаптивної та респонсивної верстки
      • Типи верстки
      • Стратегія Mobile First
      • Вендорні префікси
      • Налаштування теми
    • 🐹Адаптивна графіка
      • Щільність пікселів
      • Респонсивні зображення
      • Респонсивні фонові зображення
      • Респонсивний елемент <img>
      • Елемент <picture>
    • 🦁Методологія ВЕМ
    • 🐶Препроцесор SASS
    • 🐰CSS фреймворки
      • Що таке CSS фреймворки
  • 👷‍♂️Практика
    • 👷Практика
  • Про мене
    • Про мене
Powered by GitBook
On this page
  • width і height
  • Властивість box-sizing
  • Значення content-box
  • Значення border-box
  • Глобальний border-box
  • Нормалізація стилів
  1. Теорія
  2. Блокова модель

Основи блокової моделі

PreviousБлокова модельNextГеометрія елемента

Last updated 1 year ago

Блокова модель (Box Model) в CSS - це спосіб, яким браузер визначає та розміщує елементи на веб-сторінці. Кожен HTML-елемент може бути розглянутий як прямокутний блок, що складається з кількох частин: контенту, поля, внутрішньої рамки та зовнішньої рамки. Ці частини об'єднуються, щоб сформувати вигляд і розмір кожного елемента на сторінці.

Компоненти блокової моделі:

  1. Контент (Content): Це фактичний вміст елемента, який відображається в середині елемента (текст, зображення тощо).

  2. Внутрішня рамка (Padding): Простір між контентом і внутрішньою межею блока. Це відстань між контентом та рамкою.

  3. Поля (Margin): Простір між зовнішньою межею блока та іншими елементами на сторінці. Поля визначають відстань між елементом і навколишніми елементами.

  4. Зовнішня рамка (Border): Це обрамлення навколо елемента. Зовнішня рамка знаходиться між паддінгами і марджинами.

Деякі елементи мають визначені браузером розміри border, margin, padding. Нарпиклад кнопки, чи списки. Тому при верстці варто ці значення скидати і задавати свої значення.

width і height

width і height - це властивості CSS, які використовуються для задання ширини та висоти елемента відповідно.

  • width: Властивість width визначає ширину елемента. Ця властивість може приймати різні одиниці виміру, такі як пікселі (px), відсотки (%), ем (em), і так далі. Наприклад, width: 300px; задає ширину елемента в 300 пікселях.

  • height: Властивість height визначає висоту елемента. Як і width, вона також може приймати різні одиниці виміру, такі як пікселі, відсотки, ем, і так далі. Наприклад, height: 200px; задає висоту елемента в 200 пікселях.

При верстці рекомендовано не ставити фіксовану висоту - так вдастся уникнути проблеми переповнення, коли контенту більше, ніж елемент може вмістити.

Більшості елементів задають тільки ширину. Висоту і ширину перевадно задають тільки декоративним елементам. Зображенням і іконкам.

Властивість box-sizing

box-sizing - це властивість CSS, яка визначає, як враховувати ширину та висоту елемента, включаючи його контент, поля та рамку. Ця властивість може приймати різні значення, які вказують на різні моделі врахування розмірів елемента.

box-sizing: content-box | border-box | inherit

Content-Box (За замовчуванням): У цій моделі розміри елемента вказуються для контенту (тексту та зображення), і потім до них додаються внутрішні поля та зовнішня рамка.

Border-Box: У цій моделі розміри елемента включають його контент, внутрішні поля та зовнішню рамку. Розмір контенту фактично включає в себе внутрішні поля та зовнішню рамку.

Inherit: наслідує значення блокової моделі предка.

Значення content-box

content-box - це одне із значень властивості box-sizing в CSS.

Якщо встановити box-sizing: content-box;, ширини та висоти елемента враховують лише його внутрішній вміст (контент), і будь-які відступи, рамки або поля не включаються у визначення розмірів. Іншими словами, зовнішні виміри елемента (ширина та висота) включають лише його внутрішній контент, і будь-які додаткові відступи та рамки додаються до цих внутрішніх розмірів.

Наприклад, якщо у вас є блок з фіксованою шириною 200px та ви встановлюєте йому внутрішній текст шириною 200px, а також додаєте внутрішні відступи або рамку, то обсяг блоку залишиться 200px, а відступи або рамка будуть виступати за межі цього обсягу.

Як рахується кінцеве значення геометричних розмінів елементів:

Ширина = width + padding-left + padding-right + border-left + border-right

Висота = height + padding-top + padding-bottom + border-top + border-bottom

Наприклад:

.box {
  width: 200px;
  height: 200px;
  padding: 20px;
  margin: 50px;
  border: 10px solid black;
  box-sizing: content-box;
}

Кінцева ширина елемента буде 200px+20px+20px+10px+10px = 260px

В інструментах розробника, на вкладці Computed, можна подивитися геометрію цього елемента.

Значення border-box

border-box - це одне зі значень властивості box-sizing в CSS. Якщо встановити box-sizing: border-box;, ширини та висоти елемента враховують його внутрішній вміст (контент), включаючи внутрішні відступи та рамку, але не включають зовнішні відступи. Це означає, що обсяг елемента включає в себе контент, рамку та внутрішні відступи, і будь-які зміни ширини або висоти відступів або рамок автоматично впливають на розміри контенту, не змінюючи зовнішні розміри елемента.

Контент автоматично «стискається» таким чином, щоб всередині контейнера ще помістилися padding і border.

Як рахується кінцеве значення геометричних розмінів елементів:

Ширина = width
Висота = height

Наприклад:

      .box {
        width: 200px;
        height: 200px;
        padding: 20px;
        margin: 50px;
        border: 10px solid black;
        box-sizing: border-box;
      }

В інструментах розробника, на вкладці Computed, можна подивитися геометрію цього елемента.

Глобальний border-box

Глобальний border-box - це спеціальна властивість CSS, яка встановлює значення box-sizing: border-box; для всіх елементів на сторінці. Вона забезпечує зручний спосіб налаштувати всі елементи на сторінці таким чином, щоб їх розміри (ширина та висота) включали в себе контент, рамку та внутрішні відступи, не змінюючи зовнішніх розмірів елементів.

У разі встановлення глобального border-box не буде потреби встановлювати його для кожного окремого елемента. Для цього на самому початку файлу стилів вставляємо такий код:

*,
*::before,
*::after {
  box-sizing: border-box;
}

В такому разі border-box буде застосовано для всіх елементів та псевдоелементів.

Нормалізація стилів

Нормалізація стилів (англ. CSS normalization або CSS reset) - це техніка веб-розробки, яка використовується для створення стабільної та спростованої бази стилів для веб-сайтів. Основна ідея полягає в тому, щоб встановити стандартні стилі для всіх елементів HTML, забезпечуючи однаковий вигляд на різних веб-переглядачах. Це допомагає уникнути проблем із відображенням, що можуть виникнути через відмінності у стандартах та рендерінгу між різними браузерами.

Базова таблиця стилів (user agent stylesheet) у кожного браузера своя. Переглянути застосовані стилі можна в інструментах розробника.

Normalize.css - це популярний файл нормалізації стилів, який намагається зробити вигляд різних HTML-елементів однаковим на всіх браузерах. Він зберігає корисні стандартні стилі, які роблять елементи більш передбачуваними, зберігаючи при цьому зовнішній вигляд якнайбільше зближеним зі стандартами.

Щоб застосувати нормалайзер потрібно підключити ще один файл стилів перед усіма стилями.

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css"
  />
  <link rel="stylesheet" href="link_to_file_with_your_styles" />
</head>

В нормалізаторі за замовчуванням встановлено глобальний border-box, тому в своїх стилях його можна не вказувати.

📚
3️⃣
modern-normalize