px、em、rem、vw、%

解释 em

document.getElementById("ElementID").style.fontSize="1.5em" 

em 是个相对单位。

rem 和 em

rem 和 em 都是 css 中的相对长度单位

rem 和 em 的区别:

  • rem 是相对于根元素字体大小进行计算的,任意浏览器的默认字体都是16px,所以一般 1rem = 16px。
  • em 是相对于当前元素或父元素的字体大小来计算的,但是为什么我们经常说相对于父元素呢,其实也很好理解,因为 font-size 字体大小这个属性是可以被继承的,所以父元素的字体大小势必会影响到他的子元素的字体大小,也就是说子元素如果没有自己的 font-size,那么它的 font-size 就会继承父元素,那此时 1em 的值就可以认为是相对于父元素字体大小来计算。

  • 另外 rem 是 css3 新增的一个相对单位,r 就是 root 根的缩写,它的出现也就是为了解决 em 的缺点,em 是相对于父元素或当前元素的字体大小进行换算的,当当前元素或父元素字体大小改变时,就又得重新计算了,那么层级较多的时候,换算也就会越来越复杂,而 rem 只相对于 HTML 根元素,有了 rem这个单位我们只需要调整根元素 HTML 的 font-size,就能达到所有元素的动态适配,避免了一些复杂的层级关系。

rem 和 em 的使用场景:

  1. rem 不仅可以设置字体的大小,还支持元素宽、高等属性。
  2. em 的一些应用场景: 设置行高 line-height: 1.5em; 给中文文字段首空两个字符 text-indent: 2em;
  3. rem 的一些应用场景: 适用于响应式布局,例如需要适配 iPhone 和 iPad 等分辨率差别比较挺大的设备。

px,%,em,rem,vw/vh。

常见的CSS布局单位: 像素(px),百分比(%),em,rem,vw/vh。

(1)像素(px)是页面布局的基础,一个像素表示终端(电脑、手机、平板等)屏幕所能显示的最小的区域,像素分为两种类型:CSS像素和物理像素:

  • CSS像素:为web开发者提供,在CSS中使用的一个抽象单位;
  • 物理像素:只与设备的硬件密度有关,任何设备的物理像素都是固定的。

(2)百分比(%),当浏览器的宽度或者高度发生变化时,通过百分比单位可以使得浏览器中的组件的宽和高随着浏览器的变化而变化,从而实现响应式的效果。一般认为子元素的百分比相对于直接父元素。

(3)em 和 rem 相对于 px 更具灵活性,它们都是相对长度单位,它们之间的区别:em 相对于父元素,rem 相对于根元素。

  • em: 文本相对长度单位。相对于当前对象内文本的字体尺寸。如果当前行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸(默认16px)。(相对父元素的字体大小倍数)。
  • rem: rem 是 CSS3 新增的一个相对单位,相对于根元素(html元素)的 font-size 的倍数。作用:利用 rem 可以实现简单的响应式布局,可以利用 html 元素中字体的大小与屏幕间的比值来设置 font-size 的值,以此实现当屏幕分辨率变化时让元素也随之变化。

(4)vw/vh 是与视图窗口有关的单位,vw 表示相对于视图窗口的宽度,vh 表示相对于视图窗口高度,除了 vw 和 vh 外,还有 vmin 和 vmax 两个相关的单位。

  • vw:相对于视窗的宽度,视窗宽度是100vw;
  • vh:相对于视窗的高度,视窗高度是100vh;
  • vmin:vw和vh中的较小值;
  • vmax:vw和vh中的较大值;

vw/vh 和百分比很类似,两者的区别:

  • 百分比(%):大部分相对于祖先元素,也有相对于自身的情况比如(border-radius、translate等)
  • vw/vm:相对于视窗的尺寸