【问题标题】:Default unit for font-size?字体大小的默认单位?
【发布时间】:2011-10-26 19:22:30
【问题描述】:

网络上的各种文本声称“pt”是未提供时的默认字体大小单位,但是,我自己的测试似乎证明并非如此。我已经阅读了许多关于 W3C 的文档,涵盖 CSS 1-3 的字体大小,但我似乎无法在任何规范中找到对默认单位的实际引用。

我在 Chrome 和 IE9 中都对此进行了测试,并得到了完全相同的结果:缺少单位的元素是最小的,px 元素在中间,pt 元素是最大的。我尝试使用 W3C 定义的许多其他单位(例如“mm”、“ex”、“pc”等)来匹配大小,但 none 的测试元素的大小与目标元素(缺少单位的元素)。

任何见解将不胜感激。

<div style="font-size: 20;">20 size</div>
<div style="font-size: 20px;">20px size</div>
<div style="font-size: 20pt;">20pt size</div>

【问题讨论】:

    标签: css


    【解决方案1】:

    根据"CSS Fonts Module Level 3"font-size 属性可以具有以下值:

    值: | | |

    &lt;absolute-size&gt;&lt;relative-size&gt;&lt;percentage&gt; 在同一规范中定义,并且都是关键字(例如 smalllarger 等)或具有百分比单位。

    &lt;length&gt; 更通用在"CSS Values and Units Module Level 3" 中定义:

    长度是指距离测量值,在属性定义中用 表示。长度是dimension。但是,对于零长度,单元标识符是可选的(即可以在语法上表示为 0)。

    这意味着font-size 的无单位数字无效,0 的明确例外。


    话虽如此,&lt;div style="font-size: 20;"&gt;20 size&lt;/div&gt; 的渲染大小是多少?

    一个元素的渲染font-size将取决于很多事情。但是,如果我们能够假设

    • 用户没有自定义他们的默认font-size
    • 浏览器使用默认样式
    • 没有父元素会改变font-size(例如&lt;font&gt;&lt;sub&gt;&lt;h1&gt;...是的,将这些元素作为父元素是无效的标记,但它仍然会改变font-size)

    那么我目前知道的每个现代浏览器中默认的font-size16px

    【讨论】:

    • 你有没有参考它被忽略?并不是我怀疑你,我只是好奇我是如何/为什么在规范中错过了这一点(如果那甚至是它所在的地方)。
    • 我相信你是对的,我刚刚测试过,它正好是 16 像素(我记得在某处看到它被列为某些浏览器的默认文本大小)。
    • 我将从链接到CSS spec 开始,如果我找到有关处理无效css 规则的相关小节,我会更新。
    • font-size 需要 length (以及其他格式,请随意阅读它们),其中声明:“长度值的格式是 紧跟单位标识符. 零长度后,单位标识符是可选的。另外,你能在这件事上叫我出来是件好事,因为它让我保持警觉。
    • 我相信您已经发现了 pt、mm 等之间的根本区别,它们是基于纸张打印的“物理”测量值,而 px 显然与像素相关,而 em 与实际字体的设计。由于某些字体看起来更大,尽管它们具有相同的 x 高度,因此也可能会造成混淆。
    猜你喜欢
    • 1970-01-01
    • 2021-03-10
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2011-11-09
    • 2012-06-12
    相关资源
    最近更新 更多