html - Should I use px or rem value units in my CSS? -
i designing new website , want compatible browsers , browser settings possible. trying decide unit of measurement should use sizes of fonts , elements, unable find conclusive answer.
my question is: should use px or rem in css?
- so far know using
pxisn't compatible users adjust base font size in browser. - i've disregarded
ems because more of hassle maintain, comparedrems, cascade. - some
rems resolution independent , therefore more desirable. others modern browsers zoom elements equally anyway, usingpxnot problem.
i'm asking because there lot of different opinions desirable measure of distance in css, , not sure best.
tl;dr: use px.
the facts
first, it's extremely important know per spec, css
pxunit does not equal 1 physical display pixel. has always been true – in 1996 css 1 spec.css defines reference pixel, measures size of pixel on 96 dpi display. on display has dpi substantially different 96dpi (like retina displays), user agent rescales
pxunit size matches of reference pixel. in other words, rescaling why 1 css pixel equals 2 physical retina display pixels.that said, until 2010 (and mobile zoom situation notwithstanding),
pxdid equal 1 physical pixel, because available displays around 96dpi.sizes specified in
ems relative to parent element. leadsem's "compounding problem" nested elements progressively larger or smaller. example:body { font-size:20px; } div { font-size:0.5em; }gives us:
<body> - 20px <div> - 10px <div> - 5px <div> - 2.5px <div> - 1.25pxthe css3
rem, relative roothtmlelement, new rely on. of july 2012, around 75% of browsers in use supportrem.
the opinion
i think agrees it's design pages accommodating everyone, , make consideration visually impaired. 1 such consideration (but not one!) allowing users make text of site bigger, it's easier read.
in beginning, way provide users way scale text size using relative size units (such ems). because browser's font size menu changed root font size. thus, if specified font sizes in px, wouldn't scale when changing browser's font size option.
modern browsers (and not-so-modern ie7) changed default scaling method zooming in on everything, including images , box sizes. essentially, make reference pixel larger or smaller.
yes, still change browser default stylesheet tweak default font size (the equivalent of old-style font size option), that's esoteric way of going , i'd wager nobody1 it. (in chrome, it's buried under advanced settings, web content, font sizes. in ie9, it's more hidden. have press alt, , go view, text size.) it's easier select zoom option in browser's main menu (or use ctrl++/-/mouse wheel).
1 - within statistical error, naturally
if assume users scale pages using zoom option, find relative units irrelevant. it's easier develop page when specified in same unit (images dealt in pixels), , don't have worry compounding. ("i told there no math" – there's dealing having calculate 1.5em works out to.)
one other potential problem of using relative units font sizes user-resized fonts may break assumptions layout makes. example, might lead text getting clipped or running long. if use absolute units, don't have worry unexpected font sizes breaking layout.
so answer use pixel units. use px everything. of course, situation may vary, , if must support ie6 (may gods of rfcs have mercy on you), you'll have use ems anyway.
Comments
Post a Comment