Proprietatea de dimensionare a casetei CSS este utilizată pentru a regla sau controla dimensiunea oricărui element care acceptă un width
sau height
. Specifică modul de calcul al totalului width
și height
a acelui element.
În acest articol, voi explica modul în care CSS box-sizing
proprietatea poate fi utilizată pentru a controla dimensiunea elementelor.
Condiții prealabile
- Cunoștințe de bază CSS.
- Editor de cod.
- Browser web.
Fără proprietatea de dimensionare a casetei CSS
Dacă vă uitați la fragmentul de cod de mai jos, veți observa că există două div
elemente cu aceleași width
și height
– dar primul div
pare a fi mai mare decât a doua div
.
E destul de ciudat, nu? Pentru că de ce ar atribui cineva aceeași lățime și înălțime la două div
elemente, cu excepția cazului în care în mod ideal doreau ca aceste elemente să fie aceleași?
Continuați să citiți pentru a afla de ce cei doi div
elementele sunt diferite ?? ??? ?.
În mod implicit, fișierul Modelul cutiei CSS calculează orice element care acceptă o lățime sau înălțime în acest format:
- lățime + umplutură + chenar = lățimea redată sau afișată a casetei elementului.
- înălțime + umplutură + chenar = înălțimea redată sau afișată a casetei elementului.
Aceasta înseamnă că ori de câte ori adăugați padding
sau border
elementului, dimensiunea unui element va apărea mai mare decât dimensiunea atribuită inițial acestuia. Acest lucru se datorează faptului că conținutul acelui element include width
și height
proprietăți, dar nu include padding
sau border
proprietate.
Încă nu îl înțelegi? Uitați-vă la fragmentul de cod de mai jos pentru a vedea calculul real.
.first-box {
width: 200px;
height: 100px;
border: 8px solid blue;
padding: 20px;
background: yellow;
/* Total width: 200px + (2 * 20px) + (2 * 8px) = 256px
Total height: 100px + (2 * 20px) + (2 * 8px) = 156px */
}
.second-box {
width: 200px;
height: 100px;
border: 8px solid blue;
background: yellow;
/* Total width: 200px + (2 * 8px) = 216px
Total height: 100px + (2 * 8px) = 116px */
}
După cum se vede în fragmentul de cod, CSS adaugă fișierul padding
și border
la width
și height
deja specificat. Afișează valoarea totală ca dimensiune a elementului, ignorând astfel dimensiunea reală pe care ați atribuit-o fișierului div
.
Cu Proprietatea de dimensionare a casetei CSS
Cu box-sizing
proprietate, comportamentul implicit explicat mai sus poate fi modificat.
Folosind același cod, să adăugăm box-sizing
proprietate și setați-o la border-box
și să vedem dacă putem controla efectiv dimensiunea.
Trebuie să fi observat că cei doi div
elementele au acum aceeași dimensiune.
Sintaxă
box-sizing:content-box;
box-sizing:border-box;
content-box
Acesta este comportamentul implicit al proprietății box-sizing. content-box
nu ia în considerare width
și height
specificat pentru un element.
Adică, dacă setați un element width
la 200 pixeli, apoi setați granița la 8 pixeli și căptușeala la 20 pixeli, dimensiunea border
și padding
va fi adăugat la lățimea finală redată. Acest lucru face ca elementul să fie mai larg decât 200 pixeli.
div{
box-sizing:content-box;
width: 200px;
border: 8px solid blue;
padding: 20px;
background: yellow;
/* Total width: 200px + (2 * 20px) + (2 * 8px) = 256px*/
}
După cum se vede în fragmentul de cod de mai sus, dimensiunea acestuia div
elementul a crescut automat la 256 px chiar și atunci când a fost setat inițial la 200 px.
frontieră-cutie
Când setați box-sizing
proprietate pentru border-box
, îi spune browserului să țină cont de orice border
și padding
atribuit lățimii și înălțimii elementului.
Adică, dacă setați un element width
la 200 pixeli, că 200 de pixeli vor include orice margine sau căptușire pe care o adăugați, iar caseta de conținut se va micșora pentru a absorbi acea lățime suplimentară.
div{
box-sizing:border-box;
width: 200px;
border: 8px solid blue;
padding: 20px;
background: yellow;
/* Total width: 200px - (2 * 20px) - (2 * 8px) = 144px*/
}
După cum se vede în fragmentul de cod de mai sus, dimensiunea acestuia div
elementul s-a redus automat la 144 px chiar și atunci când a fost setat inițial la 200 px.
Să combinăm ambele fragmente de cod și să vedem exact cum va arăta caseta content-box
și border-box
.
Concluzie
Cu proprietatea de dimensionare a casetei CSS, aveți posibilitatea de a seta modul în care sunt calculate dimensiunea elementelor din codul dvs.
In conformitate cu MDN, este adesea util să setați box-sizing
la border-box
când așezați elemente. Acest lucru face ca gestionarea dimensiunilor elementelor să fie mult mai ușoară și, în general, elimină o serie de capcane pe care le puteți împiedica în timp ce vă expuneți conținutul.
Pe de altă parte, când utilizați position: relative
sau position: absolute
, folosind box-sizing: content-box
permite ca valorile de poziționare să fie relative la conținut și independente de modificările aduse mărimilor de bordură și de umplutură. Uneori ai putea dori asta.
Asta-i tot oameni buni! Sper că acest lucru a fost de ajutor. Dacă da, împărtășiți acest articol și urmați-mă Stare de nervozitate.