Curs Web Development
Curs HTML
Curs CSS
Curs Javascript
Curs PHP
Curs Phyton
Curs SQL
Curs SEO

Modelul cutiei - The box model

Modelul cutiei CSS reprezintă fundamentul machetării (layout-ul) paginilor web. Fiecare element este de fapt o cutie, care are conținut (content), umplutură (padding), chenar (border) și margine (margin), care stau împreună la fel ca straturile unei cepe.

Pe măsură ce browserul redă pagina, sunt calculate stilurile aplicate fiecărei cutii, precum și relațiile dintre toate cutiile din pagină. Înainte de a crea machete CSS (pagini web), trebuie să înțelegeți în totalitate modelul cutiei.

Margin
Border
Padding
Content

Fiecare element dintr-un document este structurat asemenea unei cutii, cu mai multe straturi, care pot fi modificate folosind o serie de proprietăți CSS caracteristice modelului cutiei, așa cum se poate vedea în imaginea de mai sus.

Proprietățile cutiei - Box Properties

Există și alte proprietăți care permit limitarea dimensiunilor, precum min-width, max-width, min-height și max-height.

Margin collapsing - dacă două cutii se ating, distanța dintre ele este egală cu cea mai mare dintre margini, nu suma lor.

Câteva considerații importante:

Implicit background-color / background-image se extind până la chenar. Acest lucru se poate schimba prin background-clip.

La conținut ce depășește spațiul vizibil apar bare de scroll. Comportamentul se controlează cu overflow.

Înălțimea cutiilor depinde de conținut, cu excepția cazului în care se setează explicit o valoare fixă.

Proprietatea border ignoră dimensiunile procentuale.

Lățimea totală = width + padding-right + padding-left + border-right + border-left. box-sizing ajută la calcul corect.

Metode avansate de manevrare a cutiei

Dincolo de modificarea lățimii, chenarului, umpluturii și marginii, există alte proprietăți cu ajutorul cărora putem schimba comportamentul cutiilor.

Revarsare - Overflow

Când setăm dimensiunea unei cutii cu valori absolute (ex. width: 500px / height: 300px) și avem mai mult conținut decât spațiu disponibil, conținutul se va „revărsa” dincolo de cutie. Pentru a controla astfel de situații folosim proprietatea overflow cu una dintre valorile acceptate:

🔧 Exemplu CSS overflow

Background clip

Fundalurile cutiilor pot fi formate din culori și/sau imagini, stivuite una peste alta. Implicit, fundalul se extinde până la marginea exterioară a chenarului, dar acest comportament poate fi ajustat prin background-clip, care definește cât de mult se extinde fundalul în interiorul cutiei.

🔧 Exemplu background-clip

Contur - Outline

Conturul unei cutii (outline) este ca o graniță, dar nu face parte din modelul cutiei. Se comportă asemănător chenarului (border), înconjoară cutia fără a-i schimba dimensiunea și este desenat în exteriorul acesteia, în interiorul marginii.

Atenție când utilizați proprietatea outline. Este folosită de regulă din motive de accesibilitate, pentru a evidenția elemente precum link-uri atunci când utilizatorul face click pe ele sau navighează cu tasta Tab.

Conturul este prezent mereu pe toate laturile cutiei și are același aspect și grosime pe toate laturile.

Este diferit de chenar: este desenat în exteriorul acestuia și se poate suprapune peste alte elemente, fără a modifica dimensiunile cutiei.

Singurul impact asupra elementelor din jur este o eventuală suprapunere.

Dacă un element are contur, acesta ocupă același spațiu ca și atunci când nu ar avea contur.

Proprietățile outline sunt:

  1. outline-width - specifică grosimea
  2. outline-style - specifică stilul
  3. outline-color - specifică culoarea
  4. outline-offset - specifică spațiul dintre marginea/chenarul elementului și contur
  5. outline - formă prescurtată pentru a seta simultan toate proprietățile

Tipuri de cutii CSS

Tot ce am discutat până acum se aplică cutiilor care reprezintă elemente de tip bloc. CSS are însă și alte tipuri de cutii, cu comportamente diferite.

Tipul de cutie aplicat unui element este specificat cu ajutorul proprietății display.

Principalele valori ale proprietății display sunt:

Implicit, elementele de tip block au display: block;, iar cele inline au display: inline;. Acest lucru poate fi schimbat prin declararea unei alte valori.

🔧 Exemplu basic display properties

🧠 Quiz - CSS Modelul Cutiei

Top