搜索
首页web前端css教程CSS中EM单位的力量

The Power of em Units in CSS

CSS中EM单位的力量

钥匙要点

    在CSS中,对于应用EM的元素,EM单元等于计算的字体大小。当在未定义字体大小的子元素上声明EM单位时,它们会从父母或另一个祖先元素中继承其字体大小。
  • > EM单元与模块化CSS技术(例如组件级造型或代码的封装部分)良好工作。它们可用于确保组件的元素相对于彼此的尺寸,并可以轻松调整大小。
  • > CSS中的REM单元始终从文档根部元素上的基本字体大小设置继承其值,而与计算的字体大小无关。因此,您可以使用REMS,但这意味着您必须使用该元素上的字体大小来控制页面上的所有组件。
  • > EM单位具有与像素相比的几个优点。它们是可扩展的,这意味着它们会根据用户的默认浏览器设置或设备的设置进行调整。这使您的网站更容易被视觉障碍的用户访问,这些用户可能需要增加字体尺寸。 EM单元还允许根据父元素的字体大小进行调整,可以进行更灵活和响应的设计。
使用CSS中的每个复杂功能,当您看到该功能的真正功能多么强大时,您将始终拥有该转折点。而且,信不信由你,我与EMS的个人转折点是在我写了一个充满双关语的介绍之后很久。 尽管到那时我已经很好地了解了EMS,但我确实开始看到当我阅读Simurai在介质上的尺寸(Web)组件上的帖子时,它们的功能有多强大。 因此,我要在这篇文章中骑他的coattail。在这里,您会发现对EM单元的快速介绍,然后进行现场演示,介绍了他所描述的技术。

CSS中的EMS是什么? 在CSS中,EM单元等于用于应用EM的元素的计算字体大小。当在未定义字体大小的子元素上声明EM单元时,它们将从父母或另一个祖先元素中继承其字体大小,可能会一直回到文档上的根元素。 查看以下CSS:

在这种情况下,对此元素或其子元素的1EM(假设没有其他字体大小的定义)等于20px。因此,如果我们添加了一行:
<span><span>.example</span> {
</span><span>font-size: 20px;
</span><span>}</span>
这个边界 - 拉迪乌斯的值为.5em 计算为10px(即20*.5)。相似地:
<span><span>.example</span> {
</span><span>font-size: 20px;
</span><span>border-radius: .5em;
</span><span>}</span>
2EM的填充值等于40px(20*2)。如前所述,这种类型的计算也适用于任何子元素 - 除非这些子元素中的任何一个具有明确定义的字体大小值,在这种情况下,EM值将根据该值计算。如果未在CSS中任何地方定义字体大小,则EM单元将等于浏览器的文档默认字体大小,该字体通常为16px。 我认为这应该可以清楚地表明EMS的工作原理。现在,让我们看一下如何使用该技术来制作易于解析的Web组件,如Simurai在原始媒介文章中所讨论的那样。我将通过提供演示来看到这一点,将他的想法进一步迈出。
<span><span>.example</span> {
</span><span>font-size: 20px;
</span><span>border-radius: .5em;
</span><span>padding: 2em;
</span><span>}</span>
何时在CSS

中使用EM EM单元与模块化CSS技术(例如组件级的样式或代码的封装部分)的效果很好。例如,它们可用于确保组件的元素(例如卡片的元素)相对于彼此的尺寸,并可以轻松地调整大小。 该技术基本上是这样的:使用字体大小的属性,如Simurai所指的,用作“特洛伊木马”,为我们组件中的各个元素或模块创建基本单元。由于上述EM单元是基于root定义的字体大小上元素上的字体大小来计算的,因此这使整个组件可以通过简单地更改父元素上的字体大小来易于解析。 让我们在Codepen演示中查看这一点:

>请参阅codepen上的sitepoint(@sitepoint)的EMS使用EMS的笔这个愚蠢的小模块中有四个基本元素。没什么花哨的,只是一个说明这一技术的例子。移动演示页面顶部的范围滑块以更改模块的大小。您也可以在全屏上进行测试。将范围滑块挂在组件的根元素上的单个值上:字体大小值。 应该注意的是,使组件可使用此单个CSS属性解析的组件不一定是为了使用户可以这样做。主要是为了维护模块的开发人员可以快速进行调整,而不必摆弄组件的所有部分的不同值。 如上一节所述,随着字体大小的变化,这会滴入该父元素上设置的所有EM值以及其所有子元素,从而使组件的所有部分都按比例灵活。 如果您检查CSS,您会注意到以下内容:
  • 组件内部的所有内容均大大为EMS,除了外部边框(我们希望始终保持在2px)和图像,如果我们愿意,我可以调整大小的图像,但是我对它的尺寸对这种情况感到满意。
  • >
  • >
  • >右上角的类似泪滴的东西是伪元素,它同样从父母的基本字体大小上受益。
  • > CSS还包括两个调整父上字体大小的媒体查询。同样,这显示了此技术的有用性,因为您不必更改媒体查询中的所有各种尺寸,而只需更改字体大小。
  • >

一些笔记,缺陷等。

> 从使用演示中的范围滑块可以看到,这种灵活的调整并不总是您想使用的。这可能有些限制。 您可能需要调整一些EM值才能使它们获得自己喜欢的方式,并且,与演示中的父边界一样,您可能不希望调整大小的能力适用于所有元素。您可以通过简单地避开要遗漏的元素来轻松克服这一点。 如Simurai的原始文章的讨论中所述,您不必使用PX单元来设置ROOT字体大小。您也可以为此使用EMS,但请记住,这将以与父母相同的方式继承,这可能来自文档对字体大小的默认值。

REMS和SASS呢?

> CSS中的REM单元始终从文档的根元素上的基本字体大小设置继承其值,而与计算字体大小无关。在HTML中,根元素始终是HTML元素。因此,您可以使用REMS,但这意味着您必须使用该元素上的字体大小来控制页面上的所有组件。它可以在某些项目上起作用,但是我认为,当将可重构性集中在孤立的组件上而不是整个文档上时,这种技术最有效。 至于使用像Sass这样的预处理器,我认为这是一个侧点。最终,您的编译样式表将使用您在SASS代码中使用的任何单元,并且继承将以相同的方式工作。

结论

如前所述,Simurai值得使这项技术更广为人知。当然,正如他所提到的那样,这并不是什么新鲜事物,多年来,许多经验丰富的开发人员已经使用了基本概念,但是在Web组件或模块的背景下,也许不是那么多。 正如Simurai所说,我认为这是构建CSS框架或组件库时使用的一种很好的方法,如果没有其他的话,我认为该技术确实会使EM单元的功能强大。 当然,EM并不是唯一可用的CSS单元。查看我们对CSS尺寸单元的概述。

经常询问有关CSS

中EM单位的问题(常见问题解答)

CSS中的EM和REM单位之间的区别是什么? EM相对于其最接近的母体或当前元素的字体大小。这意味着,如果将元素的字体大小设置为1.2em,则将是父尺寸大小的1.2倍。另一方面,REM相对于根或HTML元素。因此,如果将元素的字体大小设置为1.2REM,则将是根元素字体大小的1.2倍。这使得与EM相比,REM更容易预测,更易于控制。

>如何将像素转换为CSS中的EM单元?

>将像素转换为EM单元,您需要知道文档的基本字体大小。大多数浏览器中默认的碱基大小为16px。因此,如果要将像素值转换为EM,则将像素值除以基本字体大小。例如,如果要将18px转换为EM,则将执行18/16 = 1.125EM。

>为什么我要在CSS?

em单位中使用EM单位而不是像素提供了比像素的几个优势。它们是可扩展的,这意味着它们会根据用户的默认浏览器设置或设备的设置进行调整。这使您的网站更容易被视觉障碍的用户访问,这些用户可能需要增加字体尺寸。 EM单元还允许根据母元素的字体大小进行调整,因此可以进行更灵活和响应的设计。

>

>我可以将EM单元用于CSS中的字体大小以外的属性以外的其他属性吗?是的,您可以在CSS中使用EM单位来接受数字值的任何属性,而不仅仅是Font-font-font-font-size。这包括宽度,高度,填充,边缘和线路高度等属性。使用EM单元作为这些属性可以帮助维持设计中的比例关系。

>如何通过在HTML元素上设置font-size属性来设置CSS中的EM单元的基本字体大小。例如,如果您希望基本字体大小为18px,则将写:html {font-size:18px; }。然后,您的CS中的所有EM单元都将相对于此基本字体大小。

>

>如果我在CSS中使用EM单位嵌套元素?

,如果您嵌套具有EM单元的元素,则孩子的大小将与父元素的大小相对。这可能会导致复合效果,其中儿童元素的大小比预期的大或更小。为了避免这种情况,您可以使用REM单元,这些单元始终相对于根部元素的大小。

>

>在CSS中使用EM单元是否有缺点?

>

,而EM单位具有许多优势,它们也可能比像绝对单位一样难以管理。因为EM单位是相对的,所以它们的实际大小可以根据上下文改变。这可能会使更难预测元素的大小,尤其是在带有嵌套元素的复杂布局中。

如何覆盖CSS中的EM单元中设置的元素的大小?

>您可以通过设置更特定的选择者中的em单元中设置的元素设置的大小来覆盖元素的大小。 CSS遵循特异性层次结构,其中更特定的选择器覆盖了较少的特定性。例如,ID选择器将覆盖类选择器,并且类选择器将覆盖类型的选择器。

>

>我可以在CSS中的媒体查询中使用EM单元吗?实际上,在媒体查询中使用EM单元可以提高设计的响应能力。由于EM单元是相对的,因此它们会根据用户的默认浏览器设置或设备的设置进行调整。这意味着您的媒体查询将适应用户的设置,而不仅仅是视口尺寸。

>

>如何计算CSS中具有EM单元的嵌套元素的大小?

>

如何计算具有EM单元的嵌套元素大小,您将父元素的大小乘以子元素的大小。例如,如果父元素的大小为1.5em,并且子元素的大小为2em,则子元素的实际大小为1.5 * * 2 = 3em。这是因为子元素的大小相对于父元素的大小。

>

以上是CSS中EM单位的力量的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
CSS动画:很难创建它们吗?CSS动画:很难创建它们吗?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingmatematingmultationmatingMultationPropertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用BombingingWithjavofofofofofoffo

CSS计数器:自动编号的综合指南CSS计数器:自动编号的综合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他们可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑战挑战InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)创造性

使用卷轴驱动动画的现代滚动阴影使用卷轴驱动动画的现代滚动阴影May 07, 2025 am 10:34 AM

使用滚动阴影,尤其是对于移动设备,是克里斯以前涵盖的一个微妙的UX。杰夫(Geoff)涵盖了一种使用动画限制属性的新方法。这是另一种方式。

重新访问图像图重新访问图像图May 07, 2025 am 09:40 AM

让我们快速进修。图像地图一直返回到HTML 3.2,首先是服务器端地图,然后使用映射和区域元素通过图像上的单击区域定义了可单击区域。

DEV状态:每个开发人员的调查DEV状态:每个开发人员的调查May 07, 2025 am 09:30 AM

开发委员会调查现已开始参与,并且与以前的调查不同,它涵盖了除法:职业,工作场所,以及健康,爱好等。 

什么是CSS网格?什么是CSS网格?Apr 30, 2025 pm 03:21 PM

CSS网格是创建复杂,响应式Web布局的强大工具。它简化了设计,提高可访问性并提供了比旧方法更多的控制权。

什么是CSS Flexbox?什么是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

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脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。