【发布时间】:2012-12-12 11:45:09
【问题描述】:
我需要知道  的宽度(以像素为单位),以及它是否取决于字体大小。此外,这是否因页面中的不同元素而异?
另外,  与普通的 有什么不同?
【问题讨论】:
-
没有像素宽度。这取决于正在渲染的字体和字体大小(可以由用户更改,你知道的)。
我需要知道  的宽度(以像素为单位),以及它是否取决于字体大小。此外,这是否因页面中的不同元素而异?
另外,  与普通的 有什么不同?
【问题讨论】:
 (不间断空格)覆盖普通空格的目的是防止单词之间出现换行符。您可以使用多个  实体将多个空格放在一起。如果您只添加一个空格而不使用  实体,它们将被缩减为一个空格。
如果您使用多个 s 来填充内容,就像一些初学者HTML 用户所做的那样,那么这被认为是不正确的。您应该始终使用 CSS 边距和填充来填充内容,以保持语义正确性,并将样式与页面内容分开。
  的宽度取决于字体大小、字母间距等。与任何其他字符一样,并且如上所述,这可以由用户更改,因此没有可靠的知道方式。
【讨论】:
虽然 Maccath 的回答是正确的建议,但要直接回答您的问题:是的,您实际上可以使用一些 javascript get the width quite simply:
例如,给定:
<span id="nbsp"> </span>
宽度可以用jQuery获取:
$('#nbsp').width()
jQuery 在渲染时返回<span> 的宽度,因此它考虑了字体大小等。既然你知道怎么做,就不要这样做了。
【讨论】:
&nbsp; 不会拉伸,只是它前面的空格会拉伸。请参阅此示例:jsfiddle.net/sveinatle/HNxnY/5 我在所有跨度周围放置了一个边框,以可视化每个&nbsp; 的实际大小,它们看起来与报告的值一致。最后一个跨度仅包含一个普通空间(并且没有周围的空间以避免折叠),因此被拉伸,这也反映在最后报告的值中。
justify 时,它对 nbsp 的缩放与 Opera 不同,实际上,我得到了不同的值。但与空间的渲染方式(如边框所示)相比,它们似乎仍然是正确的。所以我仍然没有看到任何不正确的地方。字距调整是否会影响值还有待观察,但即使确实如此,那么正确性或可靠性取决于您在存在字距调整的情况下对字符宽度的定义......