html - 如何将非 nbsp 重新定义为 nbsp
问题描述
据我所知,只有两个不间断空格:U+a0(不间断空格)和 U+202f(窄不间断空格)。但是,还有其他空间在使用中,每个空间都有自己的用途。对于千位分隔符,Unicode 标准 5.0 建议使用 U+2009(细空间),它-'[u]nlike U+2002 to U+2008,它的宽度可以在排版中调整'-因此是正确使用的空间,使其与文本中的任何理由相匹配。(除了千位分隔符之外,它还可能有其他用途,但随后我们正在研究排版,这属于设计 SO。)
这个空格的问题是它被定义为一个分隔空格,你不希望在数字中间有分词。有没有办法重新定义一个特定的角色来改变它的行为方式,即使用一个.number { }
类?据我所知,伪元素不能执行此任务,伪选择器也不能。有没有办法做到这一点?
到目前为止,我能想到的唯一解决方法是在<span class="thinsp" />
每次需要空间时使用,然后根据需要定义类。例子:
HTML:
<p>
The Earth orbits the sun some 149
<span class="thinsp" />597<span class="thinsp" />
870 kilometres away from the sun. Given the speed of light, which is 299
<span class="thinsp" />792<span class="thinsp" />
458 metres per second, … … …
</p>
CSS:
.thinsp {
whitespace: nowrap
}
.thinsp::after {
content: "\2009";
}
HTML
但是,如果你有很多想要排版的数字,这绝对是可怕的。有没有办法重新定义 U+2009 的本质,使其不在行尾换行?
解决方案
没有办法像 HTML/CSS 那样覆盖特定字符的换行行为。我可以为您的问题想出三种可能的解决方案:
- 将您的整个数字包装在元素中,并使用
white-space: nowrap
评论中建议的@CBroe 禁止在它们上换行。例如:<span class="number">1 234</span>
- 使用 Unicode 中的任何不间断空格,即 U+00A0 NO-BREAK SPACE、U+2007 图形空格或 U+202F NARROW NO-BREAK SPACE。U+00A0 和 U+202F 在双向文本算法中已被视为数字分隔符,因此它们似乎是最佳选择。
- 使用 THIN SPACE 后跟 U+2060 WORD JOINER 作为千位分隔符。WORD JOINER 是一个不可见的零宽度字符,除了防止在其位置换行之外没有任何语义。
推荐阅读
- python - 合并包含列表对象的 Pandas 列
- mysql - 获取与 MAX 列关联的其他列
- javascript - KnockoutJS:显示 HTML - 填充 HTML
- html - 如何让 div 填满整个屏幕(砌体/Pinterest)布局
- php - 在客户端遍历多维数组数据时,在 php 中填充模板视图的最简洁方法是什么?
- c# - UWP 将 IF 语句转换为 NavigationViewItems 的 foreach 循环
- c# - 异步读取图像文件
- c - printf 的问题 - 不打印 put 整数值
- r - 表格不在 Rmd 笔记本中编织和打印?
- google-cloud-firestore - 在匹配规则之外的函数中使用 get() 的 Firebase 安全规则