Model pudełkowy (Box Model) w CSS
Model pudełkowy to podstawowa koncepcja CSS, która określa, jak przeglądarka oblicza wielkość i układ elementów na stronie. Każdy element HTML traktowany jest jak prostokątne pudełko, składające się z kilku warstw.
1. Struktura modelu pudełkowego
Każdy element składa się z czterech głównych obszarów (od wewnątrz na zewnątrz):
- Content (zawartość) – właściwa treść elementu (tekst, obraz, inne elementy).
- Padding (wypełnienie) – przestrzeń między treścią a ramką.
- Border (ramka) – obramowanie otaczające padding i content.
- Margin (margines) – odstęp między elementem a sąsiadującymi elementami.
Schemat:
+-----------------------------+
| Margin |
| +-----------------------+ |
| | Border | |
| | +-----------------+ | |
| | | Padding | | |
| | | +-------------+ | | |
| | | | Content | | | |
| | | +-------------+ | | |
| | +-----------------+ | |
| +-----------------------+ |
+-----------------------------+
2. Marginesy (margin)
Marginesy tworzą odstęp na zewnątrz elementu.
Sposoby zapisu:
- Jedna wartość → wszystkie strony (
margin: 10px;) - Dwie wartości → góra/dół, lewa/prawa (
margin: 10px 20px;) - Trzy wartości → góra, lewa/prawa, dół (
margin: 10px 20px 30px;) - Cztery wartości → góra, prawa, dół, lewa (
margin: 10px 20px 30px 40px;)
Można ustawiać indywidualnie:
Właściwości specjalne:
auto– najczęściej stosowane przy wyśrodkowywaniu bloków:
- Scalanie marginesów (margin collapsing) Jeżeli dwa elementy mają sąsiadujące marginesy w pionie, nakładają się na siebie, a nie sumują.
3. Wypełnienia (padding)
Padding to odstęp wewnętrzny – między treścią a obramowaniem.
Zasady zapisu takie same jak w margin (1–4 wartości).
Padding zawsze powiększa obszar elementu (chyba że używamy box-sizing: border-box – patrz dalej).
4. Ramki (border)
Border to linia otaczająca element.
Podstawowa składnia:
Można kontrolować:
- grubość (
border-width: 5px;) - styl (
solid,dashed,dotted,double,none,grooveitd.) - kolor (
border-color: red;)
Ramki można definiować osobno dla każdej strony:
5. Wysokość i szerokość elementów
a) width i height
Określają wielkość obszaru treści (content), nie licząc paddingu, borderu i marginu.
b) min i max
Można ustawić ograniczenia:
Przydatne w responsywnych stronach (np. maksymalna szerokość artykułu).
6. Box-sizing
Domyślnie (content-box) wartości width i height dotyczą tylko obszaru treści (content). Padding i border są dodawane do tej wielkości.
a) content-box (domyślne)
Całkowita szerokość = 200px + 20px*2 + 10px*2 = 260px
b) border-box
Wielkość elementu liczona jest łącznie z paddingiem i borderem.
Całkowita szerokość = 200px (nie powiększa się mimo paddingu i borderu).
✅ To ustawienie jest znacznie wygodniejsze przy tworzeniu layoutów. Często stosuje się globalnie: