前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS REM - 什么是 REM?

CSS REM - 什么是 REM?

作者头像
Jimmy_is_jimmy
发布2023-05-23 17:37:02
6230
发布2023-05-23 17:37:02
举报
文章被收录于专栏:call_me_Rcall_me_Rcall_me_R

本文,我们将探讨 CSS 中使用 REM(Root EM)

CSS 中 REM 是什么?

REM 代表 font size of the Root element,即 Root EMREM值/数据类型长度的值。长度的另外一个值是我们老朋友 - 像素 px。每个接受长度作为值的属性都接受 REM 值。比如:margin, padding, font-size 等。

我们为什么需要考虑使用 REM 单位呢?

我们为什么要使用 REM?

CSS 中,有两种 CSS 长度值:绝对长度值相对长度值

绝对长度值

绝对长度值的例子如:px - 等于 1/96 英寸cm - 相当于 37.8 px 或者 25.2/64 英寸。更多的内容,参考 MDN

当你使用这些长度的时,你可以确定它们的大小始终大致相同。当你知道确切的尺寸的时候,这很有用。但是,不要忘记了,人们可能使用不同的浏览器设置,无论是基于喜好还是访问性需求的原因。

相对长度值

相对长度值是根据其他一些值参考的。也就是说要有第 1 参考值。相对长度有 REMEMvwvh 等。

EM 的定义:

  • 父元素定义的 font-size
  • 子元素相对父元素 font-size 处理长度值

比如:

<html style="font-size: 16px">
  <body>
    <div style="width: 1.2em;" class="1.2em">
      <div style="width: 1.4em;" class="1.4em">inner</div>
    </div>
  </body>
</html>

我们定义了根元素的字体大小是 16px;那么,我们能获取到类名 1.2em 的长度是 16 * 1.2 = 19.2 px,获取到类名 1.4em 的长度是 16 * 1.2 * 1.4 = 26.88px

VW 代表视窗的 1% 宽度。

比如:

<div class="10vw" style="width: 10vw;">10vw</div>

我们定义了类名 10vw 的宽度是 10vw,该元素宽度将会是可视窗口宽度的 10%

很明显,相对长度值有个比绝对长度值的优势:站点响应式布局

REM 和 Root Font Size

REM 的定义和根元素的字体大小有关。该根元素可以是 :root 伪类选择器或者 html 标签选择器。

HTML MDN 文档中,:root 就是代指 html 根节点。但是有一个不同的地方 - 样式优先级,:root 优先级大于 html

1 rem 代表根元素的 font-size。这就意味着 1 rem 在你整个代码中都是固定的值。如果根元素的 font-size 值并未更改,则默认是 16px。如下:

html {
  font-size: 18px; // 默认值是 16px
}
h1 {
  font-size: 2rem; // 2 * 18px = 36px
}

当然,我们也可以使用百分比更改根元素的 font-size 大小。根元素的 62.5% 等于 10px。如下:

html {
  font-size: 62.5%; // 16px * 0.625 = 10px
}

h1 {
  font-size: 1.8rem; // 10px * 1.8 = 18px
}

font-size 使用 REM(或者其他相对长度)对于可访问性来说是必须的,因为当浏览器设置更改时,某些浏览器中的 px 不会调整大小。

例如,一些视力障碍人员可能需要缩放到 400% 才能看到你的文本。使用 REM 可以确保你的文本满足这些需求,因为字体大小是相对于用户选择的默认字体大小定义的(而不是浏览器默认的字体大小)。

使用 REM 响应式设计

比如 article by Adrian Sandu

html {
  margin: 0;
  padding: 0;
  font-size: 62.5%;
}

#divOne {
  width: 100%;
  box-sizing: border-box;
  font-size: 1.6rem;
  padding: 0.5rem;
  background-color: light-blue;
}

@media(min-width: 27.1875rem) { // first breakpoint: 27.1875*16px= 435px 
  p {
    font-size: 1.6rem;
  }
  #divOne {
    width: 41.8rem;
    backround-color: yellow;
    margin: auto;
  }
}

@media(min-width: 40.78125rem) { // 1.5 * first breakpoint: 653px
  p {
    font-size: 2.4rem; // 1.5 * first breakpoint
  }
  #divOne {
    width: 62.7rem; // 1.5 * width of first breakpoint
    background-color: green;
    padding: 0.75rem; // 1.5 * padding of first breakpoint
    margin: auto;
  }
}

相信看了上面的代码,读者已经明白。

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CSS 中 REM 是什么?
  • 我们为什么要使用 REM?
    • 绝对长度值
      • 相对长度值
      • REM 和 Root Font Size
      • 使用 REM 响应式设计
      • 参考
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档