Estensione degli elementi in CSS per JavaScript
Impostare le proprietà CSS
width e
height
non garantisce che l'elemento assuma
le dimensioni specificate. Diamo un'occhiata
agli esempi.
Esempio
Attualmente le dimensioni dell'elemento coincidono con quelle impostate:
<div id="elem">
text
</div>
#elem {
width: 200px;
height: 200px;
margin: 50px auto;
background: #CFF5BF;
}
:
Esempio
E ora impostiamo all'elemento la proprietà
padding.
Di conseguenza, la larghezza reale dell'elemento diventerà
maggiore e si espanderà del valore impostato
per il margine interno:
<div id="elem">
text
</div>
#elem {
padding: 25px;
width: 200px;
height: 200px;
margin: 50px auto;
background: #CFF5BF;
}
:
Esempio
Anche la presenza del bordo espande l'elemento:
<div id="elem">
text
</div>
#elem {
width: 200px;
height: 200px;
margin: 50px auto;
background: #CFF5BF;
border: 20px solid #F0D7A1;
}
:
Esempio
La proprietà box-sizing
permette di modificare il comportamento descritto sopra.
È possibile fare in modo che né il margine interno,
né il bordo espandano l'elemento.
Per farlo, è necessario assegnare a questa proprietà
il valore border-box:
<div id="elem">
text
</div>
#elem {
box-sizing: border-box;
padding: 20px;
width: 200px;
height: 200px;
margin: 50px auto;
background: #CFF5BF;
border: 20px solid #F0D7A1;
}
:
Importanza di quanto descritto
Dal punto di vista di JavaScript, la situazione descritta
non è molto conveniente. Dopo tutto, risulta che leggendo
il valore della proprietà width non possiamo affatto
essere sicuri che l'elemento avrà
proprio quella larghezza.