搜索
首页web前端css教程ATOZ CSS快速提示:REM和EM值的好处

AtoZ CSS Quick Tip: Benefits of rem and em Values

关键要点

  • 使用诸如“em”之类的相对单位来设置文本大小以及元素内外间距,比使用像素更灵活,尤其是在响应式项目中。但是,“em”单位可能会导致嵌套元素出现问题,使它们在每个嵌套级别呈指数级增长或缩小。
  • “rem”单位是设置字体大小更可靠的替代方案,因为它始终基于根元素的字体大小计算。这避免了在嵌套元素中使用“em”单位时出现的指数级增长或缩小的问题。
  • 对于浏览器支持,特别是对于旧版本的 Internet Explorer,可以使用 JS polyfill 或 px 备用方案。如果使用 Sass,可以创建混合宏和函数来计算所需的 rem 大小并自动提供备用方案。

本文是我们的 AtoZ CSS 系列的一部分。您可以在此处找到该系列的其他条目。您可以在此处查看其相应视频(关于 :required 伪类的视频)的完整文本和屏幕截图。

欢迎来到我们的 AtoZ CSS 系列!在本系列中,我将探索不同的 CSS 值(和属性),每个值都以字母表中的不同字母开头。我们知道有时屏幕截图是不够的,因此在本文中,我们添加了一些关于使用 rem 和 em 值的快速提示。 AtoZ CSS Quick Tip: Benefits of rem and em Values

R 代表 rem 和 em

在最初的屏幕截图视频中,我们了解了 :required 伪类,它可用于为必须填写字段的表单设置样式。

表单、验证和样式状态是重要的主题,但我们第一次讨论 :required 时并没有遗漏太多内容。因此,让我们来看一下使用 rem 测量单位的几个快速提示。但首先,让我们来看另一种相对单位:em。

使用 em 的优缺点

在处理响应式项目时,使用 em 等相对单位来设置文本大小以及元素内外间距比使用像素更灵活。这是因为此单位相对于其父元素的字体大小,允许元素的大小、间距和文本内容随着父元素的字体大小变化而按比例增长。

使用这些相对单位,您可以构建一个比例系统,其中更改一个元素的字体大小值会对其中的子元素产生级联效应。比例系统是一件好事,但 em 的这种行为确实存在缺点。

考虑以下 HTML 代码片段:

<ul>
  <li>lorem ipsum</li>
  <li>dolor sit
   <ol>
    <li>lorem ipsum</li>
    <li>lorem ipsum</li>
    <li>lorem ipsum</li>
    <li>lorem ipsum</li>
   </ol>
  </li>
</ul>

这个嵌套列表并不是世界上最常见的东西,但它很可能出现在条款和条件页面或其他类型的正式文件中。

如果我们想让列表项脱颖而出,我们可以将其字体大小设置为 16px 基准大小的 1.5 倍。

<ul>
  <li>lorem ipsum</li>
  <li>dolor sit
   <ol>
    <li>lorem ipsum</li>
    <li>lorem ipsum</li>
    <li>lorem ipsum</li>
    <li>lorem ipsum</li>
   </ol>
  </li>
</ul>

但这会导致嵌套 li 出现问题,因为它们的大小也会是其父元素的 1.5 倍。嵌套项将是 24px 的 1.5 倍,而不是 16px 的 1.5 倍。结果是,任何嵌套列表项都会在每个嵌套级别呈指数级增长。这可能不是设计者想要的结果!

类似的问题也发生在嵌套元素和 em 值小于 1 的情况下。在这种情况下,任何嵌套项都会在每个嵌套级别不断减小。

那么我们该怎么做呢?

使用 rem 设置文本大小

为了避免字体大小不断增大或减小,我们可以使用替代单位。

我们可以使用像素,但如前所述,相对单位在响应式项目中更灵活。相反,我们可以使用 rem 单位,因为这始终基于根元素的字体大小计算,在网站或 Web 应用程序的情况下,根元素通常是 html 元素。在 .svg 或 .xml 文档中,根元素可能不同,但这些类型的文档不在我们目前的讨论范围内。

如果我们使用 rem 设置字体大小,并不意味着 em 就永远不会被使用。我倾向于使用 em 来设置元素内的填充,以便间距始终相对于文本大小。

使用 Sass 来帮助 rem 浏览器支持

rem 单位仅从 IE9 及更高版本开始支持。如果您需要支持 IE8(或更低版本),则可以使用 JS polyfill 或以以下方式提供 px 备用方案:

li {
  font-size: 1.5em; /* 24px/16px */
}

如果您使用 Sass,您可以创建一个混合宏和一个函数来计算所需的 rem 大小并自动提供备用方案。

li {
  font-size: 24px;
  font-size: 1.5rem;
}

就是这样。关于使用 rem 的一些快速提示。如果您当前的项目中没有使用它们,我强烈建议您尝试一下。

CSS 中 REM 和 EM 值的常见问题解答 (FAQ)

REM 和 EM 在 CSS 中的主要区别是什么?

CSS 中 REM 和 EM 的主要区别在于它们计算大小的参考点。EM 相对于其最近的父元素或当前元素的字体大小。这意味着如果您嵌套元素,每个元素都使用 EM 定义字体大小,则大小会复合,并可能很快变得难以控制。另一方面,REM 相对于根元素(或 html 元素)。这意味着无论元素嵌套多深,如果您使用 REM 定义其字体大小,它都将引用 html 元素的字体大小,从而在您的网站上提供一致的大小。

我应该何时在 CSS 中使用 REM 而不是 EM?

当您想要在整个网站上创建一致且可预测的大小调整时,通常使用 REM。由于 REM 相对于根元素,因此无论您的元素嵌套多深,大小调整都将保持一致。这对于构建响应式设计特别有用,在响应式设计中,一致性和可预测性至关重要。但是,当您想要创建更动态和可缩放的设计时,可以使用 EM,其中元素的大小相对于其父元素。

如何在 CSS 中将像素转换为 REM 或 EM?

要将像素转换为 REM 或 EM,您首先需要知道文档的基准字体大小。这通常在 html 元素上设置,通常为 16px,但可以是任何值。一旦知道基准字体大小,就可以通过将所需的像素值除以基准字体大小来计算 REM 或 EM 值。例如,如果您的基准字体大小为 16px,并且您想要 24px 的字体大小,则计算结果为 24 / 16 = 1.5rem 或 1.5em。

可以互换使用 REM 和 EM 单位吗?

虽然 REM 和 EM 单位都可以用于在 CSS 中定义大小,但由于它们的参考点不同,因此它们不能互换使用。REM 始终相对于根元素,而 EM 相对于最近的父元素或当前元素。这意味着相同的 REM 或 EM 值可能会产生不同的尺寸,具体取决于其使用的上下文。

浏览器兼容性如何影响 REM 和 EM 单位的使用?

REM 和 EM 单位在所有现代浏览器中都得到了很好的支持,包括 Chrome、Firefox、Safari 和 Edge。但是,如果您需要支持旧版本的 Internet Explorer(IE 8 或更早版本),则应该注意这些浏览器不支持 REM 单位。在这种情况下,您可能需要使用像素备用方案或考虑使用 EM 单位,后者具有更广泛的浏览器支持。

REM 和 EM 单位如何影响辅助功能?

REM 和 EM 单位可以通过使其更易于缩放和响应用户设置来极大地增强您网站的辅助功能。由于这些单位是相对的,因此它们允许用户根据自己的偏好调整基准字体大小,而不会破坏布局。这对于可能需要增加字体大小以提高可读性的视力障碍用户尤其有益。

使用 REM 和 EM 单位的最佳实践是什么?

一种最佳实践是使用 REM 单位来定义字体大小、边距和填充,以确保整个网站的一致性。您可以将 EM 单位用于需要与其父元素一起缩放的元素,例如下拉菜单或工具提示。在 html 元素上以百分比定义基准字体大小也是一个好主意,这允许用户根据自己的偏好调整基准字体大小。

REM 和 EM 单位如何与媒体查询配合使用?

REM 和 EM 单位可以像其他任何单位一样在媒体查询中使用。但是,由于这些单位是相对的,因此它们可以使您的媒体查询更灵活且更具响应性。例如,如果您使用 EM 单位定义断点,它们将随着基准字体大小而缩放,从而允许您的布局适应用户设置。

我可以将 REM 和 EM 单位用于文本以外的元素吗?

是的,REM 和 EM 单位可以用于 CSS 中的任何大小定义,而不仅仅是文本。这包括宽度、高度、填充、边距、边框宽度,甚至定位。将 REM 和 EM 单位用于这些属性可以使您的布局更灵活且更具响应性。

使用 EM 单位时如何处理嵌套元素?

使用 EM 单位时,嵌套元素可能会成为一个挑战,因为大小会复合。处理此问题的一种方法是将嵌套元素的字体大小重置为 1em,这将使其等于其父元素的字体大小。或者,您可以对嵌套元素使用 REM 单位,以确保大小调整的一致性。

以上是ATOZ CSS快速提示:REM和EM值的好处的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
每周平台新闻:Galaxy Store的Web应用程序,Tappable Stories,CSS Subgrid每周平台新闻:Galaxy Store的Web应用程序,Tappable Stories,CSS SubgridApr 14, 2025 am 11:20 AM

在本周的综述中:Firefox获得了类似锁匠的力量,三星的Galaxy Store开始支持Progressive Web Apps,CSS Subgrid正在Firefox发货

每周平台新闻:Internet Explorer模式,搜索控制台中的速度报告,限制通知提示每周平台新闻:Internet Explorer模式,搜索控制台中的速度报告,限制通知提示Apr 14, 2025 am 11:15 AM

在本周的综述中:Internet Explorer进入Edge,Google Search Console吹捧新的速度报告,Firefox提供了Facebook&#039;

CSS自定义属性的范围的功率(和乐趣)CSS自定义属性的范围的功率(和乐趣)Apr 14, 2025 am 11:11 AM

您可能至少已经对CSS变量有点熟悉了。如果没有,这是两秒钟的概述:它们真的称为自定义属性

我们是程序员我们是程序员Apr 14, 2025 am 11:04 AM

构建网站正在编程。编写HTML和CSS正在编程。我是程序员,如果您在这里阅读CSS-Tricks,那么您很有可能是您

您如何从网站上删除未使用的CSS?您如何从网站上删除未使用的CSS?Apr 14, 2025 am 10:59 AM

在这里,我想预先知道的是:这是一个很难的问题。如果您降落在这里,因为您希望指向您可以运行的工具

图片中的图片网络API简介图片中的图片网络API简介Apr 14, 2025 am 10:57 AM

图片中的图片在2016年发行了Macos Sierra,在Safari浏览器中首次出现在网络上。这使用户可以弹出

使用Gatsby组织和准备图像以使图像模糊效果的方法使用Gatsby组织和准备图像以使图像模糊效果的方法Apr 14, 2025 am 10:56 AM

盖茨比(Gatsby)进行了出色的处理和处理图像。例如,它可以帮助您节省图像优化的时间,因为您不必手动

哦,嘿,填充百分比基于父元素的宽度哦,嘿,填充百分比基于父元素的宽度Apr 14, 2025 am 10:55 AM

今天,我学到了一些有关基于百分比的(%)填充的知识,我脑海中完全错了!我一直认为百分比填充是基于

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),