em和rem布局怎么使用(Em和rem)-编程知识网

长度单位em和rem之间的差异

em和rem是相对单位,由浏览器转换为像素值,具体取决于您设计中的字体大小设置。如果使用值1em或1rem,浏览器可以将其解析为16px到160px或任何其他任意值。

衬垫套件1em。

衬垫套件1em。

另一方面,浏览器使用px值,因此1px将始终显示为完整的1px。

通过滑动滑块来尝试这个CodePen示例。你可以看到rem和em单位的值可以转换成不同的像素值,而px单位保持固定的大小。

em和rem单元的使用可以使我们的设计更加灵活,可以控制元素的整体放大和缩小,而不是固定的大小。我们可以利用这种灵活性,这使我们能够在开发过程中更加快速灵活地进行调整,并允许浏览器用户调整浏览器大小以实现最佳体验。

em rem单位提供的灵活性和工作模式都差不多,所以最大的问题是,什么时候该用em值,什么时候该用rem值?

em和rem单位的区别在于浏览器将谁转换为px值。了解这种差异是决定何时使用哪种单位的关键。

我们将通过回顾rem和em单元的工作原理来确保您了解每个细节。然后我会谈谈为什么你应该使用em或rem单位。

最后,我们将看看典型元件的设计,以及在实际应用中应该使用什么类型的单元。

当使用rem单位时,它们转换后的像素大小取决于页面根元素的字体大小,即html元素的字体大小。根字体大小乘以你的rem值。

比如根元素的字体大小是16px,10rem就等于160px,也就是10 x 16 = 160。

将CSS填充设置为10雷姆。

使用em单位时,像素值将是em值乘以使用em单位的元素的字体大小。

例如,如果一个div的字体大小为18px,则10em将等于180px,即10 × 18 = 180。

将CSS填充设置为10em。

有一种常见的误解,认为em单位是相对于父元素的字体大小。事实上,根据W3标准,它们是相对于使用em单位的元素的字体大小。

父元素的字体大小会影响em值,但这纯粹是因为继承。让我们看看为什么和如何工作。

当存在使用em单位的继承时,情况会很棘手,因为每个元素都会自动继承其父元素的字体大小。继承效果只能被显式字体单位覆盖,比如px和VW。

使用em单位的元素的字体大小取决于它们。但是,此元素可能会继承其父元素的字体大小,而父元素又会继承其父元素的字体大小,依此类推。因此,em中元素的字体大小可能会受到其任何父元素的字体大小的影响。

让我们看一个例子。尝试进入下面的代码栏。当你前进时,使用Chrome开发工具或Firefox的Firebug来检查我们的em单元计算的像素值。

如果我们的根元素的字体大小是16px(通常是默认值),如果子元素div中的填充值是1.5em,那么div将从根元素继承16px的字体大小。因此,填充将被解析为24px,即1.5 x 16 = 24。

CodePen示例

如果我们再添加一个div来包装原来的div,然后将其字体大小设置为1.25em会怎么样?

CodePen示例

我们的包装div继承了16px的根元素字体大小,并将其乘以自己的字体大小1.25em。这将设置包裹div字体大小为20px,即1.25 x 16 = 20。

现在,我们的原始div不再直接继承自根元素,而是继承自其新的父元素。字体大小为20px 1.5em,其填充值现在等于30px,即1.5 x 20 = 30。

如果我们在原来的div中添加em字体单元,比如1.2em,这种继承效果会更复杂。

CodePen示例

Div从其父级继承了20px的字体大小,然后将其乘以自己的1.2em设置,得到24px,即1.2 × 20 = 24的新字体大小。

div上1.5em的填充现在将再次改变其大小,使用新的字体大小36px,即1.5 × 24 = 36。

最后,为了进一步说明em单位是相对于他们最终得到的字体大小(不是父元素)来说的,我们来看看设置padding: 1.5em,如果我们显式设置div使用14px值,如果不继承字体大小会怎么样。

CodePen示例

现在我们的padding是21px,也就是1.5 x 14 = 21变小了。它不受父元素字体大小的影响。

由于这些隐患,你可以看到为什么有必要知道如何正确管理和使用em单元。

默认情况下,浏览器的字体大小通常为16px,但是用户可以将其更改为9px到72px之间的任何值。

根html元素将继承浏览器中设置的字体大小,除非明确设置一个固定值来覆盖它。

所以,虽然html元素的字体大小直接决定了rem值,但是字体大小可能首先来自于浏览器的设置。

因此,浏览器的字体大小设置可以影响使用的每个rem单位和em单位继承的每个值。

除非被覆盖,否则它将继承浏览器默认设置的字体大小。例如,让我们放置网站的html元素,而不设置字体大小值。

如果用户让他们的浏览器默认字体大小为16px,那么根元素字体大小将为16px。在Chrome开发工具下,可以在Calculated选项卡下看到元素继承的属性。

在这种情况下,10rem等于160px,即10 x 16 = 160。

如果用户将其浏览器中的默认字体大小调整为18px,则根字体大小变为18px。现在10雷姆换算成180px,也就是10 × 18 = 180。

在html元素上设置em单位时,将转换为em值乘以浏览器字体大小的设置。

例如,如果网站的html元素的字体大小属性设置为1.25em,则根元素的字体大小将是浏览器的1.25倍。

如果浏览器字体大小设置为16px,则根字体大小将为20px,即1.25 x 16 = 20。

在这种情况下,10rem将等于200px,即10 × 20 = 200。

所以,如果浏览器字体大小设置为20px,根元素字体大小将解析为25px,即1.25 × 20 = 25。

现在10rem就等于250px,也就是10 × 25 = 250。

所有上述情况归结为以下几点:

Rem单位提供了最大的力量,不仅因为它们提供了一致的大小,还因为它们继承了。它没有使用固定的px单位,而是给了我们一种获取用户偏好的方式,影响网站每一部分rem元素的大小。

因此,使用rem单位的主要目的应该是确保无论用户如何设置自己的浏览器,我们的布局都可以调整到合适的大小。

一个站点的初始设计可以侧重于最常见的默认浏览器中16px的字体大小。

使用浏览器默认字体大小16px。

但是,通过使用rem单元,如果用户调整其字体大小,我们也可以确保布局的完整性,并使用较小的文本来避免文本空之间的挤压。

浏览器的字体大小为34px。

如果用户缩小字体,整个布局脱落,那么空白色区域的文字不会太弱。

浏览器字体大小9px

用户会因为各种原因更改字体大小设置。容纳这些设置可以获得更好的用户体验。

重要的是:

有些设计者通过组合rem单位为html元素设置了固定的px单位。这是一种常见的做法,因此当更改html元素的字体大小时,整个页面都可以相应地进行调整。

我强烈反对这种做法,因为它重写并继承了用户设置的浏览器字体大小。更夸张地说,这利用了用户自我调节以获得最佳视觉效果的能力。

如果你真的需要改变html元素的字体大小,那么使用em,rem单位,这样根元素的值也会是用户浏览器字体大小的乘积。

这将允许您通过更改html元素的字体大小来调整您的设计,但仍然保持用户浏览器设置的效果。

Em单位取决于字体大小值,而不是html元素的字体大小。

因此,em单元的主要目的应该是允许特定设计元素中的可扩展性。

例如,您可以使用em值来设置导航菜单项的填充、边距、行高和其他值。

0.9雷姆字体的菜单

这样,如果您更改菜单的字体大小,菜单项周围的间距将在剩余的空之间按比例缩放。

1.2毫米字体的菜单

在上一节中,您看到了em单位是如何失去控制的。出于这个原因,我建议只有在你清楚地识别它们的情况下才使用em单位。

在一些网页设计师中有一个争论。我相信不同的人有不同的首选方法,但我的建议如下。

根据元素的字体大小而不是根元素的字体大小进行缩放。

一般来说,需要使用em单位的唯一原因是缩放没有默认字体大小的元素。

根据上面的例子,按钮、菜单和标题等设计组件可能有自己明确的字体大小。当您更改字体大小时,您希望整个组件能够正确缩放。

universal属性将应用于非默认字体大小的元素上的填充、边距、宽度、高度和行高等效项。

我建议当您使用em单位时,它们所使用的元素的字体大小应该设置为rem单位,以保留可扩展性,但避免继承混淆。

我们经常看到使用em作为字体大小单位,尤其是标题,当我认为如果使用rem会更具扩展性。

标题之所以经常使用em单位,是因为从常规文字的大小来看,em单位比px单位要好。然而,rem单位也可以达到这个目的。如果html元素上的任何字体被调整大小,标题大小仍将被缩放。

尝试更改下面的代码笔,看看html元素上的em字体大小是如何工作的:

CodePen示例

在少数情况下,我们不希望我们的字体大小根据根元素进行调整,只有少数例外。

我们能想到的例子是使用em字体大小的下拉菜单。我们有一个二级菜单项,其文本大小取决于一级字体大小。另一个例子可以是按钮中使用的字体图标,其大小与按钮的文本大小相关。

而网页设计中的大部分元素往往没有这种类型的要求,所以一般使用rem单位的字体大小,em单位只在特殊情况下使用。

Em单位不是必需的,任何缩放大小都是根据浏览器的字体大小设置的。

这几乎占据了标准设计中的所有内容,包括高度、宽度、填充、边距、边框、字体大小、阴影,几乎包括布局的每个部分。

简单来说,所有的扩展性都应该使用rem单位。

创建布局时,以像素为单位往往更方便,但部署时应使用rem单位。

可以使用预处理,比如Stylus/Sass/Less,自动转换unit或PostCSS等插件。

或者,您可以使用PXtoEM手动进行转换。

特别地,当rem单元被用于创建统一且可扩展的设计时,媒体查询也应该是rem单元。这将确保无论用户浏览器的字体大小如何,您的媒体查询都会对其做出反应,并调整您的布局。

例如,如果用户将文本缩放得很高,您的布局可能需要从两栏调整为一栏,因为它可能会在较小的移动设备上显示。

如果断点的像素宽度是固定的,那么只有不同的视窗大小才能触发它们。但是基于rem断点,它们会对不同的字体大小做出反应。

布局中的列宽通常应为%,以便它们可以平滑地适应大小不可预知的视口。

但是,rem值仍然应该用于设置单个列的最大宽度。

例如:

保持本专栏的灵活性和可扩展性。可以防止它变得太宽。

在一个典型的网页设计过程中,不会有很多部分的布局,你不能使用灵活的设计。但是,偶尔您会遇到确实需要使用显式固定值来防止缩放的元素。

采用固定大小值的前提应该是,如果缩放,其结构会被打破。真的不会经常发生,所以在想拿出来之前,问问自己是不是用了那些px单元是绝对有必要的。

让我们用一个简短的象征性要点来总结一下我们介绍的内容:

em和px最大的区别?

em和px的区别就在于:

1.em指的是相对长度,相对单位长度指定了一个长度相对于另一个长度的属性。对于不同的设备相对长度更适用。相对长度还有:ex、ch、rem、vw、%等等。

2.px是绝对长度单位,它是一个固定的值,它反应一个真实的物理尺寸。绝对长度单位视输出介质而定,不依赖于环境(显示器、分辨率、操作系统等)。绝对长度还有:cm、mm、in、pt等等。

js中px什么意思?

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。

PX特点

1. IE无法调整那些使用px作为单位的字体大小;

2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位;

3. Firefox能够调整px和em,rem,但是96%以上的中国网民使用IE浏览器(或内核)。

变频器面板LOC REM是什么意思?

变频器LOC灯为本地控制模式,控制盘上有个按键分别是LOC/rem,rem为远程控制模式,按一次切换

变频器的指示灯老闪,电源线的线头接触不良,线路松动,要么就是指示灯快不行了,需要换新的指示灯,若自己不专业修不了,可以到专业修理门市修理。

已达到认可的检测到的错误的限制阈值;

控制器检测到,系统已达到或超过最大错误帧数了。

小程序滚动图尺寸多大?

关于rpx的概念,其他人说了,我就不重复了。

你在设计稿件中可以把图片做成750px宽,而高度,我建议你做成1600,然后掐头去尾留1400高度作为画布的高度。并且要求考虑到屏幕变长变短后UI是否可以适应。(这个和设计自适应网页一致)

为什么要这样做?

不同手机高度是不相同的。当然宽度也不相同,但是小程序给了你一种机制rpx,可以把屏幕宽度确定在750rpx,那么只要考虑高度上适应。

做到含系统UI1600的话,差不多是小屏幕和大屏幕的折中。那么你在这个基础上调整,能够比较方便。

如UI要考虑到横屏?

那这个时候就很不一样了喔,要把高宽思维调过来。

如果内容图片要支持高清?

那么你设计UI的时候,按照750px屏宽做可以的。

但是在处理内容图片的时候可以再翻大一倍。代价就是图片变大了。这个权衡好了再定。如果一个界面一下子打开一百个内容的列表,一口气要加载十几m图片,那体验也会糟糕。

如果不是设计,是开发定义css怎么办?

和其他人不同,我不建议用750rpx定义。如果需要横向盛满,那么应该用100%,或者更酷的100vw。

如果是UI元素的,用em,rem。这些都是CSS原生的概念。和一个像素被智能切成了多少个像素没关系。

这样就可以延续更加成熟的CSS框架思想