句子间距

11 html css typography spacing

在句子之间呈现应该出现的额外间距的最佳方法是什么(使用[X] HTML + CSS)?

<p>Lorem ipsum.  Dolor sit amet.</p>
               ^^ wider than word spacing
Run Code Online (Sandbox Code Playgroud)

由于HTML和XML都需要空格折叠,因此上述两个空格必须表现为单个空格.

有什么选择?下面有一些明显的,其他的存在?(CSS3中的任何内容?)这些都存在哪些缺点,包括不同的浏览器?(下面的不间断空格如何与换行相互作用?)

  • ..ipsum. &nbsp;Dolor..
  • ..ipsum.&nbsp; Dolor..
  • ..ipsum.&nbsp;&nbsp;Dolor..

网上有很多FUD声称这是为打字机发明的,但你可以在诸如美国独立宣言等文件中看到它.(是的,我知道你不应该遵循两百多年前的所有惯例,DoI只是一个方便的例子,显示这种早期的打字机和等宽字体.)或者一位印刷工作者声称额外的空间让人分心 - 改变之后背景颜色所以示例不能是其他任何东西!

说白了,虽然我很欣赏有关是否应该使用额外间距的意见和讨论(这与编程无关),这不是我所要求的.假设这是一个要求,实现它的最佳方法是什么?

Bri*_*ell 13

您可以使用white-space: pre-wrap保留空格序列,同时仍然包装文本:

<p style="white-space: pre-wrap;">Lorem ipsum.  Dolor sit amet.</p>
Run Code Online (Sandbox Code Playgroud)

在IE 8模式下直到IE 8,在3.0之前的Firefox中也不支持这种情况.

您也可以使用&emsp;&ensp;用于一个em或一个en宽的空间.我不知道这些支持有多广泛,但它们似乎适用于Mac OS X上最新的WebKit和Firefox.

两个&nbsp;字符的序列将防止该空间中的换行; 这&nbsp;意味着什么,不打破空间.序列A sentence. &nbsp;Another.导致&nbsp;出现在第二行,略微缩进文本,这可能是不可取的.序列A sentence.&nbsp; Another.工作正常,断行并且不添加任何额外的缩进,但如果您在对齐文本中使用它,并且&nbsp;在行的末尾,它将阻止该行被正确对齐.&nbsp;用于编写某人姓名的情况Mr.&nbsp;Torvalds,或者以a结尾的缩写.,其中印刷约定表明你不应该跨行分割,以避免人们混淆并认为句子已经结束.

因此,使用序列&nbsp;是不合需要的.由于这是一种风格效果,我建议使用white-space: pre-wrap,并接受在不支持它的平台上风格将不太理想.

编辑:正如评论中指出的那样,white-space: pre-wrap不起作用text-align: justify.然而,我已经使用BrowserShots测试了不同实体采样器(讨厌的广告,有点片状和慢,但它是一个非常有用的价格服务,这是免费的).它看起来像一个漂亮的各种各样的浏览器,在一个相当广泛的平台,支持和中,只有少数不仍然使用空间,以便渲染是不是太糟糕,和IE 6在Windows 2000上竟使他们破,作为盒子.BrowserShots不允许我选择我想要的确切浏览器/操作系统组合,所以我不能在XP上选择IE 6来查看是否有任何不同.所以,只要你能够在Win2K(也许是XP)上使用IE 6,这就是一个看似合理的答案.&ensp;&emsp;

另一种可能的解决方案是找到(或创建)具有用于"."字符组合的字距调整对的字体,以使它们更广泛地分开.此时@font-face支持所有主流浏览器,包括IE回到IE 5.5(虽然IE使用的格式与其他浏览器不同),使用自己的字体实际上变得合理,如果没有,则回退到用户默认字体支持不会破坏任何东西.

最后一种可能性是与CSS委员会讨论添加一个样式特征,这个特征允许你指定你想要在句子末尾有更宽的间距(这将由一个句点后面跟一个空格决定;首字母缩略词和缩写需要一个&nbsp;为了避免获得更广阔的空间).CSS委员会目前正在讨论增加更高级的排版支持,所以现在可能是开始讨论这种功能的好时机.


小智 5

对于所有“过时”和“仅限单一空间”的反对者 - 阅读一本书。&emsp;自古以来,专业出版商就在句子之间使用单个,这就是等宽双空格标准的来源。向历史学习,而不是在没有事实依据的情况下胡言乱语。不过,我不得不承认,&ensp;在大多数浏览器中, an看起来更好:&emsp;太宽了。你觉得这一段的可读性如何?Stackoverflow 的编辑器允许使用一些 HTML,我&ensp;在所有句子之间使用。


Gaz*_*zer 3

将每个句子包含在一个跨度中,并可能设置跨度的样式。(不是一个很好的解决方案)。