20

根据这个页面,CSS letter-spacing属性的默认值为normal

值得注意的是,非默认值被添加到默认值:

使用 letter-spacing 时要注意的最重要的一点是,指定的值不会更改默认值,它会添加到浏览器应用的默认间距(基于字体度量)。letter-spacing 也支持负值,这将收紧文本的外观,而不是放松它。

根据这个定义,0应该等价于normal的默认值,因为 0 + X = X。

1) 使用0代替默认值normal是否有效?(这是用于滑块实现的。)

2) 为什么0不是默认值?为什么要引入另一个值(即normal)?

CodePen 上的这个测试还表明,值0实际上等同于默认值normal

.loose {
  letter-spacing: 2px;
}

.tight {
  letter-spacing: -1px;
}

.zero {
  letter-spacing: 0;
}

.normal {
  letter-spacing: normal;
}
<p>This type has no additional letter-spacing applied.</p>

<p class="loose">This type is letter-spaced loosely at <code>2px</code>.</p>

<p class="tight">This type is letter-spaced tightly at <code>-1px</code></p>

<p class="zero">This type is letter-spaced at <code>0</code></p>

<p class="normal">This type is letter-spaced at <code>normal</code></p>

4

2 回答 2

20

不,两者并不完全等价。如果您检查当前规格

普通的

间距是当前字体的正常间距。此值允许用户代理更改字符之间的空间以对齐文本

然后

<length>

该值表示字符间的默认空间以及字符间的空间。值可能为负数,但可能存在特定于实现的限制。用户代理可能不会进一步增加或减少字符间距来证明文本的合理性。

在大多数情况下,它们会呈现相同的内容,但正如您所读到的,用户代理不会同时处理两者。


下一个级别的草案中的定义似乎略有变化,现在两者都相同。

由于遗留原因,计算的字母间距为零会产生正常的解析值(getComputedStyle() 返回值)。

你也可以在这里阅读:https ://github.com/w3c/csswg-drafts/issues/1484

CSS2 用于处理与 0 不同的法线,因此需要进行不同的计算。现在规范对待它们是一样的......


我不知道是否所有浏览器都已经实现了这个级别,但你很可能认为它们是相同的

于 2019-03-04T10:03:54.707 回答
4

根据 Mozzila 文档:https ://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing#Values

当前字体的正常字母间距。与值 0 不同,此关键字允许用户代理更改字符之间的空格以对齐文本。

似乎0将其设置为默认值更像是一个硬值。正常可以由用户代理修改。

于 2019-03-04T10:03:30.393 回答