CSS Box-sizing
U prethodnom članku koji pokriva CSS teme govorili smo o box modelu. Važno svojstvo koje je povezano sa modelom box je svojstvo box-sizing.
Svojstvo box-sizing definiše kako se izračunavaju visina i širina elementa i da li treba da sadrži ivicu, obloge i margine ili ne.
Vrednosti
Postoje dve moguće vrednosti za svojstvo veličine kutije:
- Content-box - podrazumevana vrednost.
- Border-box.
Pogledajmo kako se izračunava širina u oba slučaja.
Da podsetimo, model kutije izgleda ovako:
Content-box
Podrazumevana vrednost svojstva box-sizing je content-box. Objasnićemo kako se u ovom slučaju izračunava širina.
Iako smo postavili širinu našeg elementa na 200 piksela, stvarna širina će biti mnogo drugačija. Formula je:
Width = left margin + left border + left padding + content + right padding + right border + right margin
Dakle, u slučaju našeg primera širina bi bila:
Width = 20px + 3px + 10px + 200px + 10px + 3px + 20px
Rezultat ovog proračuna je 266px. Ovo verovatno nije rezultat koji ste očekivali, je li tako? Zbog toga treba biti zaista oprezan u vezi sa ovim.
Sada se verovatno pitate postoji li lakši način da se nosite sa širinom, nego da svaki put koristite kalkulator? Postoji! Korišćenjem border-box-a.
Border-Box
Uzmimo naš primer. Odredili smo širinu elementa od 200 piksela, a dodatak je 10 piksela sa svake strane. Ako bismo koristili kutiju sa sadržajem, ona postaje 220 piksela.
Ali, kada koristite border-box, širina će biti 200px, što znači da će širina sadržaja biti 180px, a dodavanje 20px. Sadržaj se smanjuje u veličini kako bi se prilagodio dodavanju padding-a.
Primer
Pogledajmo vizuelni primer obe situacije da bismo bolje objasnili svojstva.
HTML
<div class=”content-box”>Content-box</div>
<div class=”border-box”>Border-box</div>
CSS
div {
height: 200px;
width: 200px;
background-color: hotpink;
color: #fff;
padding: 10px;
border: solid 3px black;
margin: 20px;
}
.content-box {
box-sizing: content-box
}
.border-box {
box-sizing: border-box;
}
Kao što vidimo, u prvom primeru content-box dodaje do 266 piksela, dok border-box dodaje do 200 piksela.
Zaključak
Videli smo vezu između svojstva box-sizing i box-model, i ona je važna.Od velike je vrednosti razumeti vrednost content-box i border-box svojstva box-sizing. Iako je content-box podrazumevana vrednost, mnogo je lakše koristiti svojstvo border-box kako bi se izbegle kalkulacije koje su često zbunjujuće.
Srećno kodiranje!