box-sizing
Proprietatea în CSS controlează modul în care modelul caseta este manipulat pentru elementul care se aplică.
.module ( box-sizing: border-box; )
Unul dintre cele mai comune moduri de utilizare este aplicarea acestuia la toate elementele de pe pagină, inclusiv pseudoelemente:
*, *::before, *::after ( box-sizing: border-box; )
Aceasta este adesea numită „dimensiune universală a cutiei” și este o modalitate bună de a lucra! (Literal) pe care width
îl setați este lățimea pe care o obțineți, fără a fi nevoie să efectuați matematică mentală și să gestionați complexitatea care vine de la lățimile care provin din mai multe proprietăți. Avem chiar o zi de conștientizare a dimensiunii cutiei pe aici.
Valori
content-box
: implicit. Valorile lățimii și înălțimii se aplică numai conținutului elementului. Căptușeala și marginea sunt adăugate la exteriorul cutiei.padding-box
: Valorile lățimii și înălțimii se aplică conținutului elementului și umplerea acestuia. Bordura este adăugată la exteriorul cutiei. În prezent, numai Firefox acceptă aceastăpadding-box
valoare.border-box
: Valorile lățimii și înălțimii se aplică conținutului, umpluturii și chenarului.inherit
: moștenește dimensiunea casetei elementului părinte.
Exemplu
Acest exemplu de imagine compară valoarea implicită content-box
(sus) cu border-box
(jos):
Linia roșie dintre imagini reprezintă valoarea lățimii elementelor. Observați că elementul cu valoarea implicită box-sizing: content-box;
depășește lățimea declarată atunci când umplutura și chenarul sunt adăugate în exteriorul casetei de conținut, în timp ce elementul cu box-sizing: border-box;
aplicația se încadrează complet în lățimea declarată.
Utilizarea dimensiunii cutiei
Să presupunem că ați setat un element la width: 100px; padding: 20px; border: 5px solid black;
. În mod implicit, caseta rezultată are o lățime de 150 px. Acest lucru se datorează faptului că modelul implicit de dimensionare a casetei este content-box
, care aplică lățimea declarată a unui element numai pentru conținutul său, plasând umplutura și marginea în afara casetei elementului. Acest lucru mărește efectiv cât spațiu ocupă elementul.
Dacă vă schimbați box-sizing
la padding-box
, capitonarea este împins în interiorul caseta elementului. Apoi, cutia va avea 110 px lățime, cu 20 px de căptușeală în interior și 10 px de chenar în exterior. Dacă doriți să puneți căptușeala și marginea în interiorul cutiei, puteți utiliza border-box
. Cutia ar avea apoi o lățime de 100 px - 10 px de margine și 20 px de umplutură sunt ambele împinse în cutia elementului.
Demo
Consultați Compararea stiloului cu valorile dimensiunii casetelor de către CSS-Tricks (@ css-tricks) pe CodePen.
Legate de
width
height
padding
border
Suport pentru browser
Crom | Safari | Firefox | Operă | IE | Android | iOS |
---|---|---|---|---|---|---|
Orice *† | 3 * † | 1 ‡ | 7 * | 8 * | 2.1 * † | Orice * |
* padding-box
nu este acceptat
† versiunile mai vechi necesită -webkit
prefix (Chrome 1-9, Safari 3-5, Android 2.1-3.x)
‡ -moz
prefix necesar până la versiunea 28, neprefixat de la 29.