Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSS - What is best to use for this case (px, %, vw, wh or em)? [closed]

Tags:

html

css

ionic2

I am using Ionic 2 for the development of an app and I need to preview the app in different sizes.

Currently, I am using vw in all the sizes including font-size, padding and so on, but when resizing the font it sometimes becomes a bit small and even sometimes the text is not readable.

For that reason, I would like to know what is best to use in this case:

  • px
  • %
  • vw
  • wh
  • em

Or do I need to use also the @media and support different font sizes?

Any thoughts?

like image 411
Hamza L. Avatar asked Apr 26 '16 22:04

Hamza L.


People also ask

Should I use em or VW?

I usually choose EM because I want the size to be relative to the Heading's parent. But if you prefer to have the size be relative to the root (HTML) size, then choose REM instead. Or, you could set it to be relative to the viewport's width (VW) if that works better for your case.

Should I use em instead of PX?

If you use px as the unit for fonts, the fonts will not resize whereas the fonts with rem / em unit will resize when you change the system's font size. So use px when you want the size to be fixed and use rem / em when you want the size to be adaptive/dynamic to the size of the system. Save this answer.

What is the best measurement to use in CSS?

Pixels are the most commonly used and accepted unit. And it's considered the base of measurement for many other units. It provides the most consistent result among various devices. The box element in the following example has a height of 150px and width of 150px, and it will remain the same on all screen sizes.

Should I use em or REM CSS?

Use EM where you have to make more scaling than the root font size. And use REM where you need value according to the root there you can use REM units. This can help with many factors and reduce your code in responsive.


2 Answers

Note that I only mentioned the ones you asked about.

Here you can see the full list of CSS measurement units: CSS Units in W3Schools

Rather than telling you which one is the "right one", I would rather want you to understand what each one actually is.

Pixels (px): Absolute pixels. So for example, 20px will be literally 20 pixels on any screen. If a monitor is of 1980x1200, and you set an element's height to 200px, the element will take 200 pixels out of that.

Percentage (%): Relative to the parent value.

So for this example:

<div style="width: 200px;">
    <div style="width: 50%;"></div>
</div>

The inner div will have a width of 100 pixels.

Viewport height/width (vw/vh): Size relative to the viewport (browser window, basically).

Example:

.myDiv {
    width: 100vw;
    height: 100vh;
    background-color: red;
}

Will make an cover the whole browser in red. This is very common among flexboxes as it's naturally responsive.

Emeters (em) and Root Emeters (rem): em is relative to the parent element's font size. rem will be relative to the html font-size (mostly 16 pixels). This is very useful if you want to keep an "in mind relativity of sizes" over your project, and not using variables by pre-processors like Sass and Less. Just easier and more intuitive, I guess.

Example:

.myDiv {
    font-size: 0.5rem;
}

Font size will be 8 pixels.

Now that you know, choose the right one for the right purpose.

like image 83
Ariel Weinberger Avatar answered Oct 18 '22 22:10

Ariel Weinberger


w3schools.com has a pretty nice summary about css units.

I for myself do always use em. Why?

First of all, em is relative to your font-size. So as w3school says, 2em would be 2 times of the font-size you've defined in your parent container. So you may define a specific font-size for your html tag and use whatever em you want, to handle relative font-sizes for various tasks.

Also, em is covered in mostly all browsers.

At least, you may use @media-queries to handle responsive font-size handling for mobile devices. So you may consider using @media-queries combined with a relative font-size by using em.

like image 21
Aer0 Avatar answered Oct 18 '22 20:10

Aer0