我应该在CSS中使用px或rem值单位吗?[关闭]


375

我正在设计一个新网站,我希望它与尽可能多的浏览器和浏览器设置兼容。我正在尝试确定应该使用哪种度量单位来显示字体和元素的大小,但是无法找到一个确定的答案。

我的问题是:我应该使用CSS px还是remCSS?

  • 到目前为止,我知道使用px与在浏览器中调整基本字体大小的用户不兼容。
  • 我不理会ems,因为与rems 相比,它们在级联时更容易维护。
  • 有人说rems与分辨率无关,因此更可取。但是其他人则说,大多数现代浏览器无论如何都会对所有元素进行均等缩放,因此使用px并不是问题。

我之所以这么问,是因为关于CSS中最理想的距离度量有很多不同的看法,我不确定哪个是最好的。


4
这是一个有争议的论据和见解,而不是SO擅长的技术问题。顺便说一句,正确的答案是“否”。☺
尤卡K. Korpela

甚至评论都已过时。仅仅因为OP要求正确的意见,并不意味着我们只会发表自己的意见。将近8年后,这个问题表明该主题的发展方式仍然存在着吸引力。当前的答案已得到证实且足够技术性,没有自以为是。因此,我建议将“意见”一词编辑为“经验”,这样我们就不会陷入重新打开和关闭问题的陷阱。
Tim Vermaelen

2
@TimVermaelen这个问题一生中只有一次被关闭。所做的更改不是实质性的更改,因为答案仍然完全取决于无法提供的上下文,除非OP编辑该问题以询问特定情况。没有所有情况下的“最佳”选项,因此该问题基于观点。
TylerH

Answers:


418

TL; DR:使用px

事实

  • 首先,了解每个规范 CSS px单位等于一个物理显示像素非常重要。这一直是正确的-即使在1996 CSS 1规范中也是如此

    CSS定义了参考像素,该参考像素测量96 dpi显示器上像素的大小。在dpi基本上不同于96dpi的显示器上(例如Retina显示器),用户代理会重新调整px单位的大小,以使其尺寸与参考像素的尺寸匹配。换句话说,这种重新缩放正是为什么1个CSS像素等于2个物理视网膜显示像素的原因。

    也就是说,直到2010年(尽管存在移动变焦情况),px几乎所有像素都始终等于一个物理像素,因为所有可广泛使用的显示器均为96dpi。

  • ems中指定的大小是相对于父元素的。这导致了em“复合问题”,其中嵌套元素逐渐变大或变小。例如:

    body { font-size:20px; } 
    div { font-size:0.5em; }

    给我们:

    <body> - 20px
        <div> - 10px
            <div> - 5px
                <div> - 2.5px
                    <div> - 1.25px
  • CSS3 rem始终仅与根html元素有关,现在在使用的所有浏览器中,有96%支持CSS3 。

意见

我认为每个人都同意,将您的页面设计为适合每个人并考虑视力障碍者是很好的。一种这样的考虑因素(但不是唯一的考虑因素!)是允许用户使您站点的文本变大,以便于阅读。

最初,向用户提供缩放文本大小的唯一方法是使用相对大小单位(例如ems)。这是因为浏览器的字体大小菜单仅更改了根字体大小。因此,如果您在中指定了字体大小px,则在更改浏览器的字体大小选项时它们不会缩放。

现代浏览器(甚至不是那么现代的IE7)都将默认缩放方法更改为仅放大所有内容,包括图像和框大小。本质上,它们使参考像素更大或更小。

是的,有人仍然可以改变自己的浏览器默认样式表来调整默认字体大小(相当于旧风格的字体大小的选项),但是这是绕了一个非常深奥的方式,我敢打赌没有人1做的。(在Chrome浏览器中,它埋在高级设置,Web内容,字体大小下。在IE9中,它甚至更隐藏。您必须按Alt键,然后转到“查看”,“文本大小”。)在其中选择“缩放”选项要容易得多。浏览器的主菜单(或使用Ctrl+ +/ -/鼠标滚轮)。

1-自然发生统计错误

如果我们假设大多数用户使用“缩放”选项缩放页面,我会发现相对单位基本上无关紧要。如果所有内容都以同一单位指定(图像全部以像素为单位),那么开发页面就容易得多,而且您不必担心复合。(“被告知不会进行数学运算。” –必须处理1.5em的实际运算。)

仅对字体大小使用相对单位的另一个潜在问题是,用户调整大小的字体可能会破坏布局所做的假设。例如,这可能导致文本被剪切或运行时间过长。如果使用绝对单位,则不必担心会因布局中断而产生意外字体大小。

所以我的答案是使用像素单位。我用px一切。当然,您的情况可能会有所不同,并且如果您必须支持IE6(也许RFC的诸神可以怜悯您),则em无论如何都必须使用s。


43
您应该使用像素和rem。因此,较新的浏览器会出现问题,而旧的浏览器会变回像素(就像WordPress 2012一样)。可以使用Sass或Less来自动执行此操作,因此您要做的就是输入px值,它会自动输出px和rem。
cchiera 2012年

63
我对此参数的最大质疑是,在响应断点处调整字体大小和间距时,您可以在html元素上设置新的字体大小,并且您在rem中设置的每个尺寸都会自动调整,而使用px时,您需要编写您想调整的每项测量的新规则。当然,即使在使用rem时,也可能需要进行更多的调整,但是通过巧妙的计划,您可以免费获得大量的比例缩放。将某些箱体间距测量值与类型,更轻的代码以及更少的复杂性/更多的可维护性联系在一起,这对我来说无疑是一个胜利。
RobW 2012年

16
假设没有用户更改字体大小设置,则该字体是粗体。这种主张应以数据为依据。否则,这只是疏远一些已经很脆弱的用户(视觉上严重受损的ppl)的一种方式。如果可以,请使用rem而不是px。IMO,应用程序应该能够独立缩放其界面和字体大小。许多努力解决ems问题的开发人员都想听到“ Just use px”,但这不是网络的正确答案。
Olivvv

18
对此有一个很好的跟进。雷姆现在获得95%以上的支持。
学习统计数据,例如

10
错误,我不在乎IE(没人应该这样做)。
Vahid Amiri

193

我要赞扬josh3736提供了一些出色的历史背景。尽管提出了明确的要求,但自提出此问题以来的近五年来,CSS格局发生了变化。当问这个问题时,px 正确的答案,但今天不再适用。


tl; dr:使用rem

单位概述

历史上,px单位通常代表一个设备像素。对于像素密度越来越高的设备,这不再适用于许多设备,例如Apple的Retina Display。

rem单位代表- [R OOT EM大小。这font-size是任何比赛的结果:root。就HTML而言,它是<html>元素。对于SVG,这是<svg>元素。font-size每个浏览器* 的默认值为16px

在撰写本文时,rem约有98%的用户支持。如果您担心另外2%的情况,我会提醒您,大约98%的用户支持媒体查询

关于使用 px

互联网上的大多数CSS示例都使用px值,因为它们是事实上的标准。ptin并且理论上可以使用其他各种单位,但是它们不能很好地处理小值,因为您很快就需要求助于分数,因为分数要更长,而且难以推理。

如果您想使用细边框,px可以使用1px,并且pt需要使用0.75pt以获得一致的结果,这不是很方便。

关于使用 rem

rem的默认值16px不是使用它的强烈要求。写作0.0625rem更糟糕的不是写作0.75pt,那么为什么会有人使用rem

rem与其他单位相比,的优势包括两部分。

  • 尊重用户偏好
  • 您可以将表观px值更改rem为所需的任何值

尊重用户偏好

多年来,浏览器缩放发生了很大变化。从历史上看,许多浏览器只会扩大规模font-size,但是当网站意识到有人放大或缩小时,其精美的像素完美设计正在中断时,这种变化很快。此时,浏览器将缩放整个页面,因此基于字体的缩放不在图片之列。

尊重用户的愿望并非没有可能。仅仅因为浏览器已16px默认设置,并不意味着任何用户都无法将其偏好设置更改为24px32px纠正视力不佳或可见度较差(例如屏幕眩光)。如果您以的单位为基础rem,则任何字体大小较高的用户都会看到一个比例较大的网站。边界将变大,填充将变大,边距将变大,一切都将顺畅地扩大。

如果您以进行媒体查询rem,则还可以确保用户看到的网站适合他们的屏幕。在广泛的浏览器上font-size设置为的用户将有效地看到您的网站,如在广泛的浏览器上向用户显示的。使用RWD绝对不会造成任何损失。32px640px16px320pxrem

改变表观px价值

由于rem是基于font-size对的:root节点,如果你想改变什么1rem代表,你所要做的就是改变font-size

:root {
  font-size: 100px;
}
body {
  font-size: 1rem;
}
<p>Don't ever actually do this, please</p>

无论您做什么,都不要将:root元素的值设置为。font-sizepx

如果将font-sizeon 设置html为一个px值,则会吹走用户的首选项,而无法恢复。

如果要更改的视在rem,请使用%单位。

对此的数学计算很简单。

的明显字体大小:root16px,但可以说我们想将其更改为20px。我们所需要做的就是乘以16某个值以获得20

设置方程式:

16 * X = 20

并解决X

X = 20 / 16
X = 1.25
X = 125%

:root {
  font-size: 125%;
}
<p>If you're using the default font-size, I'm 20px tall.</p>

以的倍数做所有事情20并不是那么好,但是一个常见的建议是使表观大小rem等于10px。那个神奇的数字10/160.62562.5%

:root {
  font-size: 62.5%;
}
<p>If you're using the default font-size, I'm 10px tall.</p>

现在的问题是,font-size页面其余部分的默认设置设置得太小了,但是有一个简单的解决方法:使用设置font-size启用:bodyrem

:root {
  font-size: 62.5%;
}

body {
  font-size: 1.6rem;
}
<p>I'm the default font-size</p>

这是需要注意的重要,这一调整到位,表观值rem就是10px这意味着你可能已经用任何价值px可以直接转换到rem通过撞上一个小数位。

padding: 20px;

变成

padding: 2rem;

您选择的外观字体大小由您决定,因此,如果没有必要,则可以使用:

:root {
  font-size: 6.25%;
}
body {
  font-size: 16rem;
}

并且1rem平等1px

因此,您已经有了一个简单的解决方案,既可以尊重用户的意愿,又可以避免CSS过于复杂。

等一下,有什么收获?

我怕你会问这个。尽管我想假装这rem是魔术,可以解决所有问题,但仍然有一些值得注意的问题。我认为没有什么破坏性的,但是我要大声疾呼它们,所以您不能说我没有警告过您。

媒体查询(使用em

您将遇到的第一个问题rem涉及媒体查询。考虑以下代码:

:root {
  font-size: 1000px;
}
@media (min-width: 1rem) {
  :root {
    font-size: 1px;
  }
}

在这里,rem更改的值取决于是否使用了媒体查询,而媒体查询则取决于的值rem,那么到底发生了什么?

rem在媒体查询使用的初始值font-size不应该(见的Safari部分)考虑到可能发生的任何变化font-size的的:root元件。换句话说,它的表观价值永远是 16px

这有点烦人,因为这意味着您必须进行一些分数计算,但是我发现大多数常见的媒体查询已经使用了16的倍数的值。

|   px | rem |
+------+-----+
|  320 |  20 |
|  480 |  30 |
|  768 |  48 |
| 1024 |  64 |
| 1200 |  75 |
| 1600 | 100 |

此外,如果您使用CSS预处理器,则可以使用mixin或变量来管理媒体查询,这将完全掩盖该问题。

苹果浏览器

不幸的是,Safari有一个已知的错误,即更改:root字体大小确实会更改rem媒体查询范围的计算值。如果在:root媒体查询中更改了元素的字体大小,这可能会导致某些非常奇怪的行为。幸运的是,修复很简单:使用em单位进行媒体查询

上下文切换

如果您在各种不同的项目之间切换,则的外观字体大小很有可能rem会具有不同的值。在一个项目中,您可能使用的视在大小10px在另一个项目中的视在大小可能为1px。这可能会造成混乱并引起问题。

我在这里的唯一建议是坚持使用62.5%转换rem为的大小10px,因为在我的经验中这更常见。

共享的CSS库

如果您要编写将在您无法控制的网站(例如嵌入式窗口小部件)上使用的CSS,则实际上没有很好的方法来知道其外观大小rem。如果是这样,请随时使用px

如果仍然要使用rem,请考虑使用变量释放Sass或LESS版本的样式表,以覆盖的视在大小rem


*我不想吓到任何人不要使用rem,但是我还不能正式确认每个浏览器16px默认都在使用。您会发现,有许多浏览器,并且一个浏览器与15px或说的差异如此之小也不难18px。但是,在测试中,我没有看到一个示例,其中使用默认设置的系统中使用默认设置的浏览器具有以外的任何值16px。如果您找到这样的例子,请与我分享。


我知道这很晚了,但是,我喜欢使用REM的方式,但是使用rem的最大问题是当我使用matrix()javascript时,这是矩阵转换值正在使用的情况 px(如果我错了,请纠正我),我对此感到非常困惑。
Ampersanda '18

3
@Ampersanda,在JavaScript中,您将主要使用计算的像素值。我的建议是尽可能切换类,以便CSS可以管理外观。对于某些事情,您将无法避免使用JS计算像素值,因此最好的选择是从DOM状态计算像素值。
zzzzBov

我明白了,所以我必须这样做,getComputedStyle()但是结果总是在像素上,所以我必须将结果除以rem值(例如16)。CMIIW
Ampersanda

@Ampersanda仅在您实际生成一个rem值时(如果您已经具有正确的px值),则无需切换到rem已为给定上下文计算的事物的单位。
zzzzBov

有1rem等于1px的这引起麻烦,由于Chrome浏览器的最小字体大小:stackoverflow.com/questions/44378664/... stackoverflow.com/questions/24200797/...
保罗

44

本文介绍了相当不错的优点和缺点pxem以及rem

作者最后得出结论,最好的方法可能是同时使用pxrempx对于旧版本的浏览器首先声明rem,然后针对较新的浏览器重新声明:

html { font-size: 62.5%; } 
body { font-size: 14px; font-size: 1.4rem; } /* =14px */
h1   { font-size: 24px; font-size: 2.4rem; } /* =24px */

1
是的,这就是让我首先对雷姆感兴趣的原因。我不明白两件事:他只建议将其作为字体(不是元素)的度量单位,如果我正确理解他,则使用(r)em的唯一真正原因是IE用户可以调整文本大小?

1
@塞缪尔,我相信。如果不是为了调整文本大小,我相信我们更愿意使用px。至于元素的单位,坚持px通常会更好,因为您通常希望精确调整元素的大小。
uzyn 2012年

但是,如果执行此操作,则任何重新定义基本字体大小的浏览器设置都会搞乱您的布局,对吗?为什么不为所有物品准备雷姆呢?

1
正如此处的许多评论所指出的,我们需要放弃的原因px是为了启用调整大小。现在,如果使用rem,我们仍然必须提供px备用(在旧版浏览器中)。从本质上讲,px调整支持的大小要比调整大小更好rem。较新的浏览器支持px调整大小,对于较旧的浏览器,我们将以任何方式回退px。现在,基于此结论,我非常想知道为什么使用rem?如果我可以看到隧道尽头的灯。
Fusionstrings 2014年

3
无法保证像62.5%= 10px这样的值。仅当浏览器的默认字体大小设置为16px时,它才适用。虽然这是默认设置,但不能保证。
cimmanon 2015年

7

作为一个反思性的答案,我建议使用rem,因为它允许您在必要时立即更改整个文档的“缩放级别”。在某些情况下,当您希望尺寸与父元素有关时,请使用em。

但是对 rem的支持比较薄弱,IE8需要使用polyfill,而Webkit则存在bug。此外,子像素计算有时会导致诸如一像素线的东西消失。补救措施是为非常小的元素以像素编码。这带来了更多的复杂性。

因此,总的来说,问问自己是否值得-在CSS中更改整个文档的“缩放级别”有多重要?

在某些情况下是肯定的,在某些情况下会否定的。

因此,这取决于您的需求,并且您必须权衡利弊,因为与“常规”基于像素的工作流程相比,使用rem和em会带来一些其他注意事项。

请记住,将CSS从px切换(或转换)到rem很容易(JavaScript是另一回事),因为以下两个CSS代码块将产生相同的结果:

html {
}

body {
  font-size:14px;
}

.someElement {
  width: 12px;
}

html {
  font-size:1px;
}

body {
  font-size:14rem;
}

.someElement {
  width: 12rem;
}

6

是的,REM和PX是相对的,但其他答案也建议通过PX进行REM,我也想通过一个可访问性示例对此进行支持。
当用户在浏览器上设置不同的字体大小时,REM会自动缩放网页上的字体,图像等元素,而PX则不然。


在下面的gif中,左侧文本使用字体大小REM单位设置,而右侧字体则通过PX单位设置。

在此处输入图片说明

如您所见,当我调整网页的默认字体大小时,REM正在自动放大/缩小。(右下)

网页的默认字体大小是16px,等于1 rem(仅用于默认html页面,即html{font-size:100%}),因此1.25rem等于20px。

PS:还有谁在使用REM?CSS框架!例如Bootstrap 4,Bulma CSS等,因此更好地相处。


3

josh3736的答案是一个不错的答案,但三年后提供一个对策:

我建议使用rem单位的字体,如果仅仅是因为它更容易为的开发人员,以改变大小。确实,用户很少会在其浏览器中更改默认字体大小,并且现代浏览器缩放会放大px单位。但是,如果老板来找您说“不要放大图像或图标,而要放大所有字体”该怎么办。只需更改根字体大小并使所有其他字体相对缩放,然后进行更改就容易得多。px数十或数百个css规则大小。

我认为px对某些图像或某些布局元素使用单位应该总是有意义的,而无论设计规模如何,这些元素都应始终具有相同的大小。

Caniuse.com可能曾说过,josh3736在2012年发布答案时,只有75%的浏览器,但截至3月27日,他们声称支持93.78%。在他们跟踪的浏览器中,只有IE8不支持它。


1
Only IE8 doesn't support it among the browsers they track.??链接的页面指出,“ IE9和IE10在字体简写属性或伪元素中使用时不支持rem单元。当在:before和:after伪元素上使用时,在line-height属性中使用时,IE9、10和11不支持rem单位。在Chrome中缩小页面时,以rem大小的边框会消失。在Samsung Note II Android 4.3浏览器和Android 4.2上的Samsung Galaxy Tab 2上不起作用。Chrome 31-34和基于Chrome的Android(如4.4)在根元素具有基于百分比的大小时会出现字体大小错误。”
e-sushi

此外,与您的网站有关。as of March 27 they claim 93.78% support.在撰写此评论时,caniuse仅显示91.79%的完整浏览器支持。从您的百分比来看,我很确定您也包括了错误浏览器支持(目前为2.8%,这可以解释为乐观的94.6%的总体覆盖率-但事实是,这2.8%带有错误,不完整甚至完全错误)失败的支持……如我之前的评论所述:每个错误都是由于浏览器版本和操作系统组合不同而引起的。)您可能需要相应地更正答案……
e-sushi 2015年

1

我发现编程网站字体大小的最佳方法是为定义基本字体大小body,然后font-size在声明的其他所有内容中使用em(或rem)。我认为这是个人喜好,但是它很好地为我服务,并且使整合响应速度更快的设计变得非常容易。

就使用rem单元而言,我认为最好在代码的渐进性之间找到平衡,同时也为较旧的浏览器提供支持。 查看有关浏览器对Rem单元的支持的链接,这将有助于您做出很多决定。


好。但是使用px单位对响应式设计也很容易(仅基于px而不是em编写媒体查询)?

但是,如果您希望随着网站的视口宽度变小而减小body字体大小,则可以更改字体大小,并且一切都会随之改变。
谷物盗案2012年

我不是真的担心浏览器的支持。我将仅包括所有大小的后备px大小,以便较旧的浏览器可以解释一些内容。

然后使用rem进行渐进式操作。只要您提供一个后备,那么我认为没有任何伤害。在我看来,这似乎是一项额外的工作,但可能不适合您。
grainlarceny

0

pt与相似rem,因为它是相对固定的,但几乎总是与DPI无关,即使不兼容的浏览器都px以与设备相关的方式进行处理也是如此。 rem根元素的字体大小会有所不同,但是您可以使用Sass / Compass之类的工具通过来自动执行此操作pt

如果您有这个:

html {
    font-size: 12pt;
}

然后1rem永远是12ptrem并且em仅与设备依赖于它们所依赖的元素无关;一些浏览器的行为不符合规范,而是按px字面意思对待。即使在网络的较早时期,1点始终被认为是1/72英寸-也就是说,一英寸有72点。

如果您使用的是旧的,不兼容的浏览器,并且您具有:

html {
    font-size: 16px;
}

然后1rem将取决于设备。对于html默认情况下会继承的元素,1em也将取决于设备。 12pt将是有希望保证的与设备无关的等效项:16px / 96px * 72pt = 12pt,其中96px = 72pt = 1in

如果要坚持特定的单位,进行数学运算可能会变得非常复杂。例如.75em of html = .75rem = 9pt,和.66em of .75em of html = .5rem = 6pt。一个好的经验法则:

  • 采用 pt绝对大小。 如果您真的需要相对于根元素保持动态,那么您就需要太多CSS。您需要一种可以编译为CSS的语言,例如Sass / SCSS。
  • 使用em的相对大小。可以很容易地说:“我希望左侧的边距大约为一个字母的最大宽度”,或者“使此元素的文本略大于周围的文本”。 <h1>是在ems中使用字体大小的一个很好的元素,因为它可能出现在各个地方,但应始终大于附近的文本。这样,您不必为每个应用于的类都设置单独的字体大小h1:字体大小会自动调整。
  • 使用px了非常微小的尺寸。 由于尺寸太小,pt在某些浏览器中以96 DPI的分辨率会变得模糊,因为ptpx不太一致。如果您只想创建一个细的一像素边框,请这样说。如果您使用的是高DPI显示屏,那么在测试过程中您将看不到这一点,因此请务必在某个普通96 DPI显示屏上进行测试。
  • 不要处理亚像素以使高DPI显示器看起来不错。一些浏览器可能会支持它-尤其是在高DPI显示器上-但是这是不行的。大多数用户都喜欢大而清晰的网站,尽管网络在其他方面教会了我们开发人员。如果要使用最新的屏幕为用户添加扩展的详细信息,则可以使用矢量图形(阅读:SVG),无论如何您都应该这样做。

1
pt用于印刷媒体,切勿用于屏幕
SF

@sf CSS将pt和px定义为始终保持相同的比率,尽管这在技术上并不是这些术语的准确用法(72pt = 96px = 1in)。实际上,在CSS中,px并不是真正的单个设备像素。在我的屏幕上,1px是2个设备像素。使用pt而不是px的优点是,您可以轻松指定相对于文本相关大小的元素大小。
Zenexer

-2

一半(但只有一半)刻板的答案(另一半是对官僚主义现实的不屑一顾):

使用vh

一切都始终按照浏览器窗口的大小调整。

始终允许向下滚动,从不向侧面滚动。

将主体宽度设置为静态50vh,并且没有任何浮点或超出父div的范围。而且仅使用表格进行样式设置,因此所有内容都可以按预期严格地固定到位。包括一个javascript函数,以撤消用户可能执行的任何ctrl +/-活动。

除了那些告诉您使事物与样机匹配的人之外,每个人都会恨您,他们会欣喜若狂。每个人都知道他们的意见是唯一重要的意见。


-3

是。或者,相反,不。

嗯,我的意思是,没关系。使用对您的特定项目有意义的一种。PX和EM或两者同等有效,但根据整个页面的CSS架构,其行为会有所不同。

更新:

为了澄清,我要指出的是,通常使用哪种都无关紧要。有时,您可能特别想选择一个。如果您可以从头开始,并且想要使用基本字体大小并使所有内容与之相对应,则EM很好。

在将重新设计改造到现有代码库上时,常常需要PX,并且需要px的特殊性来防止不良的嵌套问题。


所以你的答案是没关系吗?还是在某些情况下您会看重一个?如果是这样,在什么情况下会发生这种情况?

@Samuel是的,有时候您可能想要使用其中一个。我已经用更多信息更新了我的答案。
DA。

抱歉,我对原始措辞有些困惑。它认为您的标题中有REM,身体中有EM。看来您是在询问REM。答案仍然几乎相同,但是REM确实有一些其他优点需要考虑,但是主要与EM相同使用-它允许您使用“基本”字体大小。
DA。

为什么“ 如果您可以从头开始并且想要使用基本字体大小并使所有内容都与之相对应,em会很好。 ” (r)em超过px有什么优势?是IE用户可以调整文本大小,还是px以外还有其他优势(似乎更简单)?

EM和REM具有相同的好处:您可以将HTML或BODY设置为特定的字体大小(例如10px),然后将其他所有内容设置为EM或REM。这样,如果您想按比例增大所有类型,只需将一种初始的10px样式更改为11px。5年前,当我们都构建自己的基于JS的自定义字体大小调整小部件时,这种方法就更有用了。如今,浏览器在缩放(尤其是移动)方面做得更好,我发现它的好处要少得多。如果您发现PX更简单,那对您来说是一个好处,并且当然是使用PX的正当理由。
DA。

-4

em是前进的方向,不仅是字体,您还可以将它们与框,线宽和其他内容一起使用,为什么呢?

简而言之,em是唯一与浏览器中的alt +和alt-键一起缩放的缩放器。

其他测量可以缩放,但不如em干净。

顺便说一句,如果您想要最佳的缩放比例,也请尽可能将图形转换为基于矢量的SVG,因为这些也可以随浏览器的缩放比例进行缩放。


3
但是,当今大多数浏览器都会对所有页面元素进行均等缩放(除非您调整基本字体大小),因此对于现代浏览器来说,使用(r)em的优势并不正确吗?

是的,不是,虽然您说的正确,但更多的是比例因子,而不是比例增量。不管使用哪种测量方式,增量都将始终保持一致,但是比例因子(假设数学运算正确无误)将根据需要进行调整,例如宽屏显示器与标准显示器,或者矩形像素与正方形像素。由于REMS实际上是基于一个真正的打印机,然后测量缩放将永远是一个更好的配合,其他(如%)往往充其量增量偏移
美女

(续)在两个方向上都应用了乘法运算,因此在某些情况下会导致观看比例严重偏高。
shawty 2012年

2
“仅将em与浏览器中的alt +和alt-键一起缩放即可缩放。” =不正确。
DA。

好吧,我本可以措词更好,请参阅我先前的评论以进行更正。
shawty 2012年

-5

EM仅可扩展用于处理+/-缩放的媒体查询,而人们一直在这样做,而不仅仅是盲人。这是另一个写得很好的书为什么原因如此专业演示。

顺便说一下,这就是Zurb Foundation使用ems的原因,而劣等的Bootstrap 3仍然使用pixel的原因。


2
这不是真的。在过去,像素在旧版本的IE中无法缩放。+/-现在可以在所有当前浏览器中进行整页缩放,因此这不是问题。另外,这个问题是关于rems而不是px-不是em vs px。
Rich Bradshaw 2014年

1
你们让我笑。您甚至尝试过使用+/-(使用像素)来扩展您的网站吗?关于像素缩放的记录是完全错误的。否决我所有你想要的。投票不会改变现实。
robmuh 2014年

1
也许我们正在处理略有不同的事情-您有机会提出一个简单的演示来演示差异吗?
Rich Bradshaw 2014年

我认为问题不在于在媒体查询中使用什么单位…
binki 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.