Box-sizing
CSS vlastnost box-sizing
dokáže změnit vypočítávání rozměrů boxu.
content-box
Ve standardním režimu se ve výchozím stavu počítají rozměry boxů tak, že se k nastavené šířce přičte šířka okraje (padding
) a tloušťka rámečku (border-width
) — nazývá se to modelem obsahovým (box-sizing: content-box
).
Následující element tedy bude mít výslednou šířku 112 pixelů (1 + 5 + 100 + 5 + 1).
element {width: 100px; padding: 5px; border: 1px solid #000}
border-box
Druhý typ počítání (a v mnoha situacích výhodnější) je box-sizing: border-box
— tzv. okrajový box-model. Při jeho aplikování na výše uvedený kód získáme element o šířce přesně 100 pixelů. A šířky padding
u a border
u se promítnou dovnitř elementu. Tedy pro samotný obsah zbude 88 pixelů (100 - 1 - 5 - 5 - 1).
Změna box modelu vlastností box-sizing
funguje od IE 8 (do Firefoxu 28 pouze s -moz-
prefixem). Kvůli historickým Webkitům můžeme přidat prefix i pro ně.
element {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
Okrajový box model pro všechny elementy
V případě, že řešíme správné zobrazení od IE 8 včtetně, můžeme si pomocí hvězdičkového selektoru box model přepnout na border-box
i při zachování standardního režimu.
*, *:after, *:before {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
V IE 7 a starších je možné okrajového modelu dosáhnout v quirk režimu, což ale znemožní využívat funkcí, které fungují jen v režimu standardním. Takže to se moc nevyplatí.
Komentáře