Rozszerzanie elementów w CSS dla JavaScript
Ustawienie właściwości CSS
width i
height
nie gwarantuje, że element osiągnie
określony rozmiar. Spójrzmy
na przykładach.
Przykład
Teraz rozmiary elementu pokrywają się z zadanymi:
html<div id="elem">
text
</div>css#elem {
width: 200px;
height: 200px;
margin: 50px auto;
background: #CFF5BF;
}
Результат:
Przykład
A teraz ustawmy elementowi właściwość
padding.
W rezultacie rzeczywista szerokość elementu stanie się
większa i rozszerzy się o podaną wartość
wewnętrznego marginesu:
html<div id="elem">
text
</div>css#elem {
padding: 25px;
width: 200px;
height: 200px;
margin: 50px auto;
background: #CFF5BF;
}
Результат:
Przykład
Obecność obramowania również rozszerza element:
html<div id="elem">
text
</div>css#elem {
width: 200px;
height: 200px;
margin: 50px auto;
background: #CFF5BF;
border: 20px solid #F0D7A1;
}
Результат:
Przykład
Właściwość box-sizing
pozwala zmieniać opisane powyżej zachowanie.
Można sprawić, aby ani wewnętrzny margines,
ani obramowanie nie rozszerzały elementu.
Dla tej właściwości należy
ustawić wartość border-box:
html<div id="elem">
text
</div>css#elem {
box-sizing: border-box;
padding: 20px;
width: 200px;
height: 200px;
margin: 50px auto;
background: #CFF5BF;
border: 20px solid #F0D7A1;
}
Результат:
Ważność opisanej sytuacji
Z punktu widzenia JavaScript opisana sytuacja
nie jest zbyt wygodna. W końcu okazuje się, że po przeczytaniu
wartości właściwości width wcale nie możemy
być pewni, że element będzie
dokładnie tej szerokości.