Treci la conținutul principal

CSS Box Sizing

Lățimea și înălțimea unui element pot fi calculate în două moduri, cu padding-ul și bordurile incluse sau lăsate deoparte, iar proprietatea CSS box-sizing alege care dintre ele se aplică.

Dacă nu o setezi, browserul le lasă în afara valorii pe care ai dat-o și le adaugă după aceea:

  • lățimea reală = width + padding + border
  • înălțimea reală = height + padding + border

Așadar, padding-ul și bordura se adaugă peste dimensiunea pe care ai specificat-o, iar elementul apare adesea mai mare decât te așteptai. box-sizing rezolvă această problemă.

Exemplu

Ambele elemente <div> cer aceeași lățime și înălțime, dar apar la dimensiuni diferite: doar al doilea are padding-ul suplimentar care îl mărește.

Prompt
Creează două elemente div, ambele cu width: 300px și height: 100px. Primul div are o bordură solidă albastră de 1px și fără padding. Al doilea div are o bordură solidă roșie de 1px și padding de 50px. Arată cum ajung să aibă dimensiuni diferite deoarece padding-ul se adaugă la width/height.
Output: complete HTML page "}, {

Soluția CSS box-sizing

Cu box-sizing, padding-ul și bordura pot deveni parte din lățimea și înălțimea totală pe care le declari. Valoarea care face asta este box-sizing: border-box;, care le păstrează în interiorul calculului.

Rezultatul este atât de bun încât mulți dezvoltatori și-l doresc pe fiecare element din paginile lor. Browserele aplică deja box-sizing: border-box; multor elemente de formular, dar nu tuturor, ceea ce explică de ce câmpurile de input și zonele de text pot arăta diferit la width: 100%;.

Să setezi box-sizing: border-box; pe tot este și sigur, și înțelept.

Exemplu

Adaugă box-sizing: border-box; la cele două elemente <div> și acum apar la dimensiuni identice.

Prompt
Creează două elemente div, ambele cu width: 300px, height: 100px, și box-sizing: border-box. Primul div are o bordură solidă albastră de 1px. Al doilea div are padding de 50px și o bordură solidă roșie de 1px. Ambele div-uri ar trebui să pară aceeași dimensiune deoarece box-sizing: border-box include padding-ul și bordura în width/height.
Output: complete HTML page "}, {

Box-sizing universal

Ca să acoperi întreaga pagină, pune box-sizing: border-box; pe selectorul universal *.

Prompt
Folosește selectorul universal (*) pentru a aplica box-sizing: border-box tuturor elementelor de pe pagină. Adaugă două elemente div cu width: 300px, height: 100px, padding și borduri diferite, pentru a demonstra că rămân aceeași dimensiune totală.
Output: complete HTML page "}, {