Ce que vous avez découvert est la base du modèle de boîte CSS.
Vous pouvez jouer avec en utilisant le box-sizing
qui a deux valeurs possibles :
- content-box (par défaut)
- border-box
content-box Par défaut. Les propriétés de largeur et de hauteur (et les propriétés min/max) n'incluent que le contenu. Les bordures, le padding et les marges ne sont pas inclus
border-box Les propriétés width et height (et les propriétés min/max) incluent le contenu, le padding et la bordure, mais pas la marge.
( fuente : W3Schools.com)
Par défaut, la bordure s'ajoute à la largeur/hauteur de votre conteneur.
Voyez ce qui se passe lorsque vous utilisez border-box
:
.test{
width:300px;
height:auto;
background-color:#A8F9C0;
float:left;
border:2px solid black;
box-sizing: border-box;
}
<div class="test">
</div>
Cela permet de s'assurer que la largeur reste la même et qu'elle inclut la bordure du cadre.