Reputation: 1312
Okay, first off, yes I have read many many articles (Should I use px or rem value units in my CSS?) and forums about this.
I know that 1px is not a physical pixel but rather a CSS pixel, and rem
is basically the same as em
, but it is relative to the root element (hence the r in rem - root), rather than the parent element. em
itself is equal to the size set in the document, and it is popular due to the scalability in comparison with pixel, which cannot be scaled.
In all articles I read that everyone loves rem, and it should be used for font-size
in modern browser, but also use px
as a fall back for IE8 and lower. I see the main reason people use rem is so that the size scales better and is more "mobile friendly".
Now suddenly I read articles saying that all modern browsers support viewport
, so scalibilty is no longer that big of an issue.
Then I read to properly convert rem to px and vice versa, we can use html { font-size: 62.5%; }
which then turns 1rem to 10px.
So after all this confusion, if scalibilty is no issue because of viewports and 1rem is converted to 10px via html 62.5%, plus I will use pixels as a fall back anyway, then why use rem in the first place and not just stick with pixel? I don't see any advantages of using rem
anymore.
Or did I miss some major advantage of rem
?
Upvotes: 17
Views: 10298
Reputation: 11455
We should use rems or em because they are based on font-size. It may seem a bit strange but by doing so we can build more robust responsive layouts because just by changing font sizes, we will automatically change length.
Since it depends on font size and that gives us a lot of flexibility, and it's just a great technique.
Upvotes: 0
Reputation: 1312
So after all the research, I came to the conclusion that the only advantage of rem
, is that users who use a bigger default font-size in their browser setting, will get the font-size scaled properly, while px
will not scale. In other words, using rem
for font-size
, adds support for Accessibility to your website.
To sum up:
rem
is a way to add support for Accessibility to your website.em
, in other words, it scales rem
and px
equally.rem
is supported by all major browsers on desktop and mobile devices. px
as fall back option for IE8 and lower.font-size
of 16px (feel free to Google yourself), which equals to 1rem
/em
px
and rem
you can use html {font-size: 62.5%;}
which converts 10px
to 1rem
In one sentence: Use rem
with px
on font-size
to support accessibility.
html {
font-size: 62.5%;
}
.your_class {
font-size: 16px;
font-size: 1.6rem;
}
Upvotes: 18
Reputation: 9567
The 62.5% only works if the browser's default font-size
is left at the default 16px
. Just because you, as a normal able-bodied person (or at least a person with normal eyesight) have the default settings for font-size
, you cannot assume that holds true for the populace at large.
Consider those with poor eyesight. In their case, they'll have their font-size set to 20px, or maybe 28px for very poor eyesight. If everything is maintained in px
, then your display isn't going to be mutable for those with different needs. Content will overflow its containers and your website will look broken.
Or, maybe you can relate to having a piece-of-junk computer at the place where you work. We used to have old 800x600 monitors on a factory floor at my first job. Default font-size on those was 10px. Websites looked horrible on them, and it was because everyone expected the content in their site's content to consume much more space than it actually did.
The obvious solution is to make the layout respond to the content. font-size
is one of the few elements that a browser will bring to the table on its own based on the preference of its user. Since that user is your audience, you'd do well to respect their preference as you want them to continue visiting your site, and not hate using it when they do.
Just my 2¢ (and, well, the actual reason that people push for rem
as opposed to px
).
Upvotes: 10