When 1em is applied to an element, it takes the default value of the browser (usually, 16px) or the font-size value of its parent, right?. But I noticed that if I use something
When 1em is applied to an element, it takes the default value of the browser (usually, 16px) or the font-size value of its parent, right?
No, it takes its own font-size
, computed based on its parent (or the default browser-supplied value). Since the browser-supplied font-size
of h1
is 32 pixels, the resultant margin is 32 pixels.
However, using something like font-size: 100%; solves the discrepancy.
By setting font-size: 100%;
or font-size: 1em;
on an element, you're telling it to use 100% of the font size of its parent, so setting 1em
as a length on anything else will follow that 100%.
1em
is equal to the font-size of the element in question. So when using it with margins, it will be equivalent to the font-size of the element you're applying the margin too.