The Box Model
Every HTML element is a rectangular box made of four layers, from the inside out: content (the text/image itself), padding (space inside the border), border (a visible line around the padding), and margin (space outside the border, between this box and its neighbours).
Example 1: seeing all four layers at once
.box {
width: 200px;
padding: 20px;
border: 4px solid #2f7dff;
margin: 30px;
}
This box's actual rendered width, by default, is more than 200px — the browser adds the padding and border on top of the content width you set. That surprises almost every beginner at least once.
Example 2: box-sizing fixes the confusing part
.box {
box-sizing: border-box;
width: 200px;
padding: 20px;
border: 4px solid #2f7dff;
/* now the box is EXACTLY 200px wide, padding and border included */
}
box-sizing: border-box changes the rule so
width means the total width, padding and border
included, rather than just the content. This one line eliminates a huge
share of "why is this wider than I set it to be" confusion, which is why
many real projects set it globally with * { box-sizing: border-box; }
right at the top of their stylesheet.