Modulul 02 din 06

Box Model în CSS3: Ghid Tehnic și Stilizare Avansată

În arhitectura web, orice element HTML reprezintă o cutie dreptunghiulară compusă din conținut, padding, border și margin. CSS3 a revoluționat box model CSS prin proprietăți precum box-sizing, border-radius, box-shadow, overflow, clip-path, object-fit, aspect-ratio, outline-offset și border-image. Acest tutorial CSS3 explică în detaliu cum să controlezi dimensiunea elementelor, spacing-ul, cardurile web, layout-ul responsive și designul modern pentru CSS tutoriale și web design profesionist.

Box model CSS este fundamentul designului web modern: aici înveți cum să controlezi dimensiunile reale ale elementelor, spațiul dintre componente, bordurile, umbrele și proporțiile cardurilor. Cu box-sizing, padding, margin, overflow, border-radius și aspect-ratio poți crea layout-uri curate, stabile și responsive pentru site-uri profesionale, fără bug-uri de dimensionare și fără trucuri fragile în CSS. Acest mod de învățare este util atât pentru începători, cât și pentru dezvoltatori care doresc să optimizeze front-end-ul și să își îmbunătățească designul web pentru SEO și experiență utilizator.

border-radius

Cum rotunjești colțurile casetelor fără imagini

În era Web 2.0, realizarea de colțuri rotunjite necesita tăierea a 4 imagini PNG individuale și poziționarea lor migăloasă în colțurile containerelor. Proprietatea border-radius din CSS3 permite specificarea unei raze de curbură în pixeli, procente sau rem direct în foaia de stiluri.

Poți seta o rază unică pentru toate cele 4 colțuri sau poți defini raze individuale (stânga-sus, dreapta-sus, dreapta-jos, stânga-jos) pentru a crea forme asimetrice elegante (cum ar fi carduri cu filă de dosar sau cercuri perfecte cu border-radius: 50%).

cod CSS3

/* Colturi rotunjite simetrice */
.card {
  border-radius: 12px;
}

/* Tab de navigare (rotunjire doar sus) */
.tab {
  border-radius: 10px 10px 0 0;
}

/* Avatar circular perfect */
.avatar {
  border-radius: 50%;
}

rezultat vizual

12px
tab
50%
Explicație tehnică și sfaturi SEO:
  • Elimină complet cererile HTTP inutile pentru imagini decorative de colț.
  • Sintaxa extinsă cu bară (border-radius: 50px / 20px) permite crearea de elipse și forme organice uimitoare.
box-shadow

Adăugarea umbrelor exterioare și interioare (Drop Shadow)

Proprietatea box-shadow oferă adâncime vizuală (profunzime 3D) elementelor din pagină. Aceasta primește offset orizontal, offset vertical, rază de estompare (blur), rază de extindere (spread) și culoarea umbrei (folosind de regulă valori RGBA cu transparență).

Adăugarea cuvântului cheie inset inversează direcția umbrei, proiectând-o în interiorul casetei — o tehnică foarte utilizată pentru câmpuri de formular apăsate sau efecte de sticlă adâncită.

cod CSS3

/* Umbra exterioara difuza pentru carduri elevat */
.card-elevat {
  box-shadow:
    0 10px 20px rgba(0,0,0,.12),
    0 2px 4px rgba(0,0,0,.08);
}

/* Umbra interioara (inset) */
.caseta-adancita {
  box-shadow: inset 0 2px 6px rgba(0,0,0,.25);
}

rezultat vizual

exterioară
interioară
Optimizare și bune practici UI:
  • Puteți combina mai multe umbre separate prin virgulă pe același element pentru un efect ultra-realistic de umbră stratificată.
  • Evitați blurring-ul excesiv pe telefoane mobile vechi pentru a menține rată de cadre ridicată la derulare.
box-sizing

Dimensiuni previzibile cu box-sizing: border-box

În modelul tradițional de cutie (content-box), dacă setai un container la width: 300px și adăugai padding: 20px și border: 5px solid, lățimea totală randată devenea 350px (stricând grila de layout).

Proprietatea box-sizing: border-box forțează browserul să includă padding-ul și bordura ÎN LĂȚIMEA declarată. Din acest motiv, regula universală * { box-sizing: border-box; } este considerată piatra de temelie a oricărui proiect web modern.

cod CSS3

/* Resetare universala recomandata */
*, *::before, *::after {
  box-sizing: border-box;
}

.box {
  width: 200px;
  padding: 20px;
  border: 4px solid #d6472e;
  /* Latimea ramane fix 200px pe ecran! */
}

rezultat vizual

width totală: exact 200px
Importanță pentru Design Responsive:
  • Garantează că două coloane setate la width: 50% vor sta perfect una lângă alta chiar dacă primesc padding sau borduri.
outline-offset

Distantierea conturului de bordura elementului

Spre deosebire de border care consumă spațiu în layout, outline se desenează deasupra elementului fără să afecteze dimensiunile cutiei. Cu outline-offset, poți îndepărta sau apropie această linie de contur.

cod CSS3

.buton:focus-visible {
  outline: 2px solid #6ea8d8;
  outline-offset: 4px; /* Spatiu intre buton si linie */
}

rezultat vizual

resize

Controlul redimensionării elementelor de către utilizator

Proprietatea resize permite sau blochează posibilitatea ca vizitatorul să tragă de colțul unui element (cum ar fi un câmp de text <textarea>) pentru a-i schimba dimensiunea. Valori disponibile: both, horizontal, vertical, none.

cod CSS3

textarea {
  resize: vertical; /* Permite doar redimensionare pe inaltime */
  min-height: 80px;
}

rezultat vizual — trage de colțul din dreapta-jos

Redimensionează această cutie trăgând din colț.
overflow

Gestionarea conținutului ce depășește containerul

Când conținutul interior este mai mare decât dimensiunea fizică a casetei, overflow decide comportamentul: hidden (taie excesul), scroll (adaugă bară permanentă) sau auto (afișează bară doar dacă este necesar). CSS3 permite control independent pe axe cu overflow-x și overflow-y.

cod CSS3

.container-scroll {
  max-height: 100px;
  overflow-y: auto;
  overflow-x: hidden;
}

rezultat vizual

Linia 1 — conținut lung de text
Linia 2 — derulează vertical ușor
Linia 3 — overflow: auto adaugă scrollbar
Linia 4 — funcționează perfect pe mobil
border-image

Borduri spectaculoase din imagini sau gradiente CSS

Proprietatea border-image vă permite să folosiți o imagine sau un gradient CSS3 ca bordură pentru un element. Aceasta combină sursa (source), felieria (slice) și modul de repetare (repeat).

cod CSS3

.bordura-gradient {
  border: 10px solid transparent;
  border-image: linear-gradient(45deg, #d6472e, #e8b339) 1;
}

rezultat vizual

Container cu bordură din gradient direct în CSS!
box-decoration-break

Stilizarea elementelor rupte pe mai multe linii

Când un element inline (cum ar fi un text subliniat cu fundal) se frânge pe mai multe rânduri, box-decoration-break: clone aplică padding, border și border-radius pe FIECARE linie separat.

cod CSS3

.text-evidentiat {
  background: #d6472e;
  color: white;
  padding: 4px 8px;
  border-radius: 4px;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

rezultat vizual

Un text evidențiat pe mai multe linii de document.
clip-path

Decuparea elementelor în poligoane și cercuri

clip-path este o unealtă extrem de puternică ce decupează fizic o cutie HTML în forme geometrice personalizate: poligoane (polygon()), cercuri (circle()) sau căi vectoriale SVG.

cod CSS3

/* Decupare diamant / romb */
.forma-romb {
  clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}

/* Decupare cercul */
.forma-cerc {
  clip-path: circle(50% at 50% 50%);
}

rezultat vizual

object-fit & object-position

Încadrarea imaginilor responsive fără distorsionare

Imaginile <img> cu dimensiuni fixe se pot deforma dacă raportul lor de aspect variază. Cu object-fit: cover, imaginea umple cadrul menținându-și proporțiile (la fel ca background-size: cover).

cod CSS3

img.avatar-profil {
  width: 80px;
  height: 80px;
  object-fit: cover;
  object-position: center;
  border-radius: 50%;
}

rezultat vizual

object-fit: cover
proprietăți logice (margin & padding)

Stilizarea modernă bazată pe direcția de citire

Proprietățile logice înlocuiesc direcțiile fizice (left/right/top/bottom) cu concepte adaptabile la modul de scriere. margin-inline: auto este metoda modernă recomandată de a centra elemente pe orizontală.

cod CSS3

.card-centrat {
  margin-inline: auto; /* Centrare stanga + dreapta */
  padding-block: 16px; /* Spatiere sus + jos */
  max-width: 300px;
}

rezultat vizual

margin-inline: auto & padding-block: 12px
padding-block

Padding vertical și orizontal fără a scrie două reguli

Proprietățile logice padding-block și padding-inline reduc codul repetitiv, pentru că se adaptează automat la direcția de scriere a documentului.

cod CSS3

.card {
  padding-block: 18px;
  padding-inline: 20px;
}

rezultat vizual

padding-block + padding-inline în CSS modern.
outline-style

Contururi decorative fără a modifica dimensiunea cutiei

outline este ideală pentru focus states, because it does not influence layout. Layouts stay stable even when marking a rejected or selected widget.

cod CSS3

.buton:focus-visible {
  outline: 3px solid #6ea8d8;
  outline-offset: 3px;
}

rezultat vizual

border-image-source

Bordură din gradient sau imagine fără a folosi sprite-uri

În loc să adaugi patru miniaturi, poți folosi border-image-source pentru a crea margini decorative fluide și profesioniste, inclusiv pe carduri și butoane.

cod CSS3

.card {
  border: 8px solid transparent;
  border-image-source: linear-gradient(135deg,#d6472e,#e8b339);
  border-image-slice: 1;
}

rezultat vizual

Bordură gradient CSS3.
mask-border

Masca de margine pentru formă avansată

mask-border permite o bordură complexă, dintr-o imagine sau un gradient, fără a obliga browserul să păstreze o tradiție rigidă de lățime sau stil.

cod CSS3

.element {
  border: 12px solid transparent;
  border-image: linear-gradient(135deg,#d6472e,#e8b339) 1;
}

rezultat vizual

Masca de margine pentru efecte sofisticate.
clamp()

Dimensiuni responsive fără calc manual

Funcția clamp() ajută la definirea dimensiunilor în funcție de intervale, de exemplu o dimensiune de text sau lățime care crește treptat între minim și maxim.

cod CSS3

.titlu {
  font-size: clamp(1.2rem, 2vw, 2.5rem);
}

rezultat vizual

Text scaling cu clamp().
aspect-ratio

Controlul proporțiilor fără înălțime fixă

aspect-ratio definește proporția dintre lățime și înălțime, fiind ideală pentru carduri de conținut, fotografii și demo-uri interactive.

cod CSS3

.poster {
  aspect-ratio: 4 / 3;
  width: 220px;
}

rezultat vizual

4:3
min() și max()

Calcularea automată a dimensiunilor

Funcțiile min() și max() simplifică constrângerile responsive, alegând automat valoarea minimă sau maximă dintre combinații de unități.

cod CSS3

.container {
  width: min(90vw, 700px);
  height: max(150px, 20vh);
}

rezultat vizual

min(90vw, 220px) + max(90px, 16vh)
contain

Îmbunătățirea performanței prin izolarea layout-ului

Proprietatea contain spune browserului să izoleze modul în care un element afectează layout-ul, stilizarea și renderizarea restului paginii.

cod CSS3

.widget {
  contain: layout paint style;
}

rezultat vizual

Widget izolat
contain: layout paint style
overflow-clip-margin

Controlul zonei de decupare a conținutului

Cu overflow-clip-margin poți controla spațiul dintre marginea unui element și zona de decupare a conținutului care este ascuns, util pentru efecte precise în galerii și carusele.

cod CSS3

.photo {
  overflow: hidden;
  overflow-clip-margin: 12px;
}

rezultat vizual

CLIP
scroll-margin

Alinierea automată a secțiunilor la scroll

scroll-margin adaugă un spațiu de compensare în jurul unui element de la care browserul vrea să facă focus la derulare. În practică, este utilă când o secțiune se poziționează automat în vizor și nu trebuie să fie acoperită de un header fix, de un meniu sau de alte elemente de interfață. În acest exemplu, click-ul asupra butonului mută vizualizarea în interiorul containerului, fără a derula întreaga pagină.

cod CSS3

.secțiune:target {
  scroll-margin-top: 18px;
}

.container {
  overflow: auto;
  scroll-behavior: smooth;
}

rezultat vizual

Rând 1
Rând 2
Rând 3
Rând 4
Rând 5
Secțiune țintă — apare cu spațiu de compensare
line-clamp

Trunchierea textului după un număr de rânduri

line-clamp este util pentru carduri de articole, previzualizări și liste de conținut, unde un text mai lung trebuie tăiat elegant după un număr fix de rânduri fără a rupe layout-ul. Pe mobil sau în cardurile compacte, această tehnică ajută la păstrarea unui aspect uniform și la evitarea blocurilor prea înalte, fără a pierde informația principală din primii trei rânduri.

cod CSS3

.preview {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  max-height: calc(3 * 1.4em);
}

rezultat vizual

Acesta este un text de descriere mai lung decât un preview normal. Într-un card de listare sau într-o previzualizare de articol, după trei rânduri browserul taie automat restul conținutului pentru a păstra aspectul compact și uniform, fără să rupă designul pe mobil sau desktop.
inset-inline

Poziționarea bazată pe direcția de citire

Proprietățile inset-inline și inset-block permit poziționarea logică a elementelor fără a fi legate de stânga-dreapta fizică.

cod CSS3

.badge {
  inset-inline-start: 12px;
  inset-block-start: 8px;
}

rezultat vizual

badge
Text cu direcția RTL
padding-inline / margin-inline

Spațiere logică și adaptare la direcția de citire

Proprietățile padding-inline și margin-inline sunt mult mai flexibile decât padding-left sau margin-right, deoarece se adaptează la direcția de citire a limbii.

cod CSS3

.cta {
  padding-inline: 1.25rem;
  margin-inline: auto;
}

rezultat vizual

CTA cu padding-inline
border-inline / border-block

Borduri logice pentru layout-uri multi-limbă

Cu border-inline și border-block poți controla marginile fără să te bazezi pe stânga-dreapta fizică. Acest lucru ajută mult în designurile i18n și în ghidurile de accesibilitate.

cod CSS3

.note {
  border-inline: 2px solid #6ea8d8;
  border-block: 1px solid #d6472e;
}

rezultat vizual

Borduri logice
min-size / max-size

Controlul dimensiunilor fără calc manual

Proprietățile min-width / max-width și versiunea logică min-inline-size / max-block-size ajută la construcția unor componente scabile și robuste pe mobil.

cod CSS3

.card {
  min-inline-size: 180px;
  max-inline-size: 360px;
}

rezultat vizual

Card cu dimensiuni reglate
isolation

Separarea straturilor pentru efecte vizuale robuste

isolation: isolate creează un nou context de stacking, ceea ce previne suprapunerile nedorite și ajută la efecte de transparență, overlay și blur.

cod CSS3

.glass-panel {
  isolation: isolate;
  background: rgba(255,255,255,.12);
}

rezultat vizual

Panel cu izolare și stivuire curată
outline-offset

Contururi vizibile fără a modifica layout-ul

Conturul CSS este util pentru focusare, notificări și elemente interactive. Cu outline-offset poți distanța conturul de element fără a afecta dimensiunea reală a box-modelului.

cod CSS3

.focus-ring {
  outline: 2px solid #e8b339;
  outline-offset: 4px;
}

rezultat vizual

Ring de focus visibil
scrollbar-color

Personalizarea barei de scroll

Proprietatea scrollbar-color permite să stilizezi bara de scroll pentru browser-ele care o acceptă, fără a recurge la soluții JavaScript sau pseudo-elemente complexe.

cod CSS3

.panel {
  scrollbar-color: #d6472e #efe7d6;
  scrollbar-width: thin;
}

rezultat vizual

Text 1
Text 2
Text 3
Text 4
Text 5
Text 6
Text 7
Text 8
border-start-start-radius

Colțuri logice adaptate la limbă

Proprietățile logice de colțuri, precum border-start-start-radius, se ajustează în funcție de direcția de citire și fac designul mult mai robust în proiectele internaționale.

cod CSS3

.card {
  border-start-start-radius: 12px;
  border-end-end-radius: 18px;
}

rezultat vizual

Colțuri logice