In CSS, an em
is a relative unit based on the font-size of the document. So, what exactly is an em
then, if the font-size of the document itse
It'll be relative to whatever the browser's default font-size is, which WILL be specified in a physical size, e.g. '10pt'.
It will take the browsers' default value of 16px if no parent element has defined it.
Also see this: http://pxtoem.com/
body
is not the document root element — that's a very common misconception. The parent element of body
is html
, whose default font size matches the browser's default font size setting (typically 16px
).1
This applies even if you set a font-size
value in ems on both body
and html
. So if you did this:
html, body { font-size: 2em; }
Then, assuming a default font size of 16px
as set by the user, html
will have a font size of 32px
(twice the default font size) and body
will have a font size of 64px
(twice of its parent, html
).
1 To be precise, the html
element's default font size is the initial value, medium, which according to the spec corresponds to the preferred default font size as set by the user.