CSS:100%字体大小 – 100%是什么?

有很多关于百分比大小和其他大小的字体的文章和问题 。 但是,我无法找出百分比值的参考值是什么。 我知道这在所有浏览器中都是相同的大小。 我也读过这个例子:

百分比(%):百分比单位非常像“em”单位,除了一些基本的差异。 首先,当前字体大小等于100%(即12pt = 100%)。 在使用百分比单位的同时,您的文字仍可完全扩展至移动设备和辅助function。

资料来源: http : //kyleschaeffer.com/best-practices/css-font-size-em-vs-px-vs-pt-vs/

但是如果你说“ie 12 pt = 100%”,那么这意味着你首先必须定义font-size: 12pt 。 这是如何工作的? 您首先以绝对衡量来定义大小,然后将其称为“100%”? 没有多大意义,因为许多样本认为这样做是有用的:

 body { font-size: 100%; } 

所以通过这样做, 什么是相对于字体大小? 我注意到我在屏幕上看到的尺寸对于每种字体都不相同。 例如,Arial看起来比Times New Roman更大。 另外,如果我只是这样做,身体大小= 100%,这是否意味着它将在所有的浏览器相同? 或者只有当我第一次定义绝对值?

更新,SAT 7月23日

我到了那里,但请忍受我。

所以,如果我理解正确,%值与默认的浏览器字体大小有关。 那么,这是很好,但再给我几个其他问题:

  1. 这个标准尺寸对于每个浏览器版本都是一样的,还是在不同版本之间有所不同?
  2. 一世 ! Google Chrome的设置(以前从未看过!),我看到标准的“serif”,“sans-serif”和“monospace”设置。 但是我怎么解释这个字体呢? 说我定义font: 100% Georgia; ,浏览器需要多大的尺寸? 它会查找serif的标准大小,还是使用“Georgia”字体作为浏览器的标准大小
  3. 在几个网站上,我阅读 Sizing text and line-height in ems, with a percentage specified on the body [..], was shown to provide **accurate, resizable text across all browsers** in common use today比如Sizing text and line-height in ems, with a percentage specified on the body [..], was shown to provide **accurate, resizable text across all browsers** in common use today 。 但是从我现在学习的内容来看,我相信你应该在可resize的文本(使用%或em,比如他们在这个报价中推荐的)或者在不同的浏览器中使用'精确,一致的字体大小(通过使用px或作为基地)。 它是否正确?

Google设置:

谷歌浏览器设置

这就是我认为,如果不用绝对值来定义大小,事情可能会是这样。

在这里输入图像说明

浏览器的默认值是Firefox的16pt左右,你可以进入Firefox选项,点击内容标签,检查字体大小。 您也可以为其他浏览器做同样的事情。

我个人喜欢控制我的网站的默认字体大小,所以在每个页面包含的CSS文件中,我将设置BODY默认值,如下所示:

 body { font-family: Helvetica, Arial, sans-serif; font-size: 14px } 

现在,我所有的HTML标签的字体大小将inheritance14px的字体大小。

假设我想要一个所有div的字体大小比身体大10%,我只需要:

 div { font-size: 110% } 

现在任何查看我的页面的浏览器都会自动使所有的div比body的大10%,这应该是15.4px。

如果我想所有的div的字体大小要小10%,我可以这样做:

 div { font-size: 90% } 

这将使所有div的字体大小为12.6px。

你也应该知道,由于字体大小是inheritance,每个嵌套的div将减less10%的字体大小,所以:

 <div>Outer DIV. <div>Inner DIV</div> </div> 

内部div的字体大小为11.34px(12.6px的90%),这可能不是有意的。

这可以帮助解释: http : //www.w3.org/TR/2011/REC-CSS2-20110607/syndata.html#value-def-percentage

我的理解是,当字体设置如下

 body { font-size: 100%; } 

浏览器将根据该浏览器的用户设置呈现字体。

规范说,%呈现

相对于父元素的字体大小

http://www.w3.org/TR/CSS1/#font-size

在这种情况下,我认为是指浏览器设置为。

font-size属性值的百分比是相对于父元素的字体大小 。 CSS 2.1说这个模糊和混淆(指“inheritance字体大小”),但CSS3文本说得很清楚。

body元素的父元素是根元素,即html元素。 除非在样式表中设置,否则根元素的字体大小取决于实现。 它通常取决于用户设置。

在许多情况下,设置font-size: 100%是毫无意义的,因为如果没有样式表设置自己的字体大小,元素会inheritance父级的字体大小(导致相同的结果)。 但是,覆盖其他样式表(包括浏览器默认样式表)中的设置可能很有用。

例如, input元素通常在浏览器样式表中有一个设置,使其缺省字体大小小于复制文本的字体大小。 如果你想使字体大小相同,你可以设置

input{font-size:100%}

对于body元素,逻辑上的冗余设置font-size: 100%被相当频繁地使用,因为它被认为有助于防止一些浏览器错误(在可能已经失去其重要性的浏览器中)。

这是相对于默认浏览器的字体大小,除非你用pt或px中的值覆盖它。

对不起,如果我迟到了派对,但是在编辑时你会对font: 100% Georgia做一个评论font: 100% Georgia ,其他答案没有回应。

font: 100% Georgia之间有一个区别font: 100% Georgiafont-size:100%; font-family:'Georgia' font-size:100%; font-family:'Georgia' 。 如果这是所有速记方法所做的,字体大小的部分就没有意义了。 但是它也将很多属性设置为它们的默认值:线条高度变为normal (约1.2),对于样式(非斜体)和重量(非粗体)也是如此。

就这样。 其他的答案已经提到了其他的一切。

正如你令人信服地显示的那样, font-size: 100%; 不会在所有浏览器中呈现相同的内容。 但是,您将在CSS文件中设置您的字体,所以在所有浏览器中这将是相同的(或后退)。

我相信font-size: 100%; 将其与基于em的devise相结合可能非常有用。 正如本文所示,这将创build一个非常灵活的网站。

什么时候这有用? 当您的网站需要适应访客的愿望。 以一个老人为例,他的默认字体大小为24像素。 或者是一个大屏幕分辨率的小屏幕,可以增加他的默认字体大小,因为他不得不斜视。 大多数网站会中断,但是基于em的网站能够应对这些情况。

相对于为该字体定义的默认大小。

如果有人在networking浏览器上打开您的页面,则会使用默认的字体和字体大小。

至于我的理解,它可以帮助您的内容适应不同的字体系列和字体大小的值,从而使您的内容具有可扩展性。 至于inheritance字体大小的问题,我们总是可以通过为元素提供特定的字体大小来覆盖。

根据1996年的所有规格date, font-size百分比值是指父元素的(计算)字体大小。

 <style> div { font-size: 16px; } span { font-size: 75%; } </style> <div><span>this font size is 12px!</span></div> 

这很容易。

如果div声明一个相对的字体大小,比如em ,或者甚至更糟,另外一个百分比呢? 请参阅上面的“计算” 。 无论相对单位转换为什么绝对单位。

剩下的唯一问题是在根元素(没有父元素)上使用百分比值时会发生什么情况:

 html { font-size: 62.5%; /* 62.5% of what? */ } 

在这种情况下,请看这个问题的“重复” 。 TLDR:根元素的百分比是指浏览器的默认字体大小,每个用户可能会有所不同。

参考文献:

  • CSS 1规范(1996)
  • CSS 2.1规范(2011)
  • CSS字体级别3规范(2013)
  • CSS字体Level 3编辑草案(2017)