我应该避免使用“text-align:justify;”吗?

时间:2008-11-24 23:16:18

标签: css usability typography

有没有理由避免使用text-align: justify;

是否会降低可读性或导致问题?

13 个答案:

答案 0 :(得分:61)

首先,这纯粹是一个与设计相关的问题和解决方案。网格的设计指定是否需要对齐文本。我认为单独对齐并不会对可用性产生重大影响。使文字难以辨认的糟糕排版会降低可用性。也就是说,确保您的类型具有稳固的对比度和良好的间距平衡。字体大小也很重要。

This site是在线证明文本成功的成功尝试。由于你不能像使用InDesign那样用CSS控制字母和单词之间的空格,所以要证明文本的合理性并且没有空行的“河流”沿着你的行向下运行是很困难的,这发生在单词之间的空格时超过线之间的空格。使文本合理化的事情很难:长文字,行宽不能容纳足够的文字,文字和背景颜色之间的对比度太大;它们使河流看起来更宽更明显。

排版的理想是拥有一个偶数文本块,如果你眯着眼睛,文本块变成一个统一的固体阴影。因此,如果您在白色背景上保持大约10px和60%灰色的文本,并且具有大约20个单词的行,则对齐不应该看起来很难看。但请记住,这无助于提高可用性。小而相对较轻的文字会惹恼很多人,特别是年长的读者。

我应该注意到,­(软连字)正确地分隔了像superawesome这样的长篇麻烦的单词,你可以模仿正确的排版(例如InDesign)。有很多东西可以帮助你做到这一点。我建议隐藏,操作和显示要在客户端完成的文本的逻辑,可能是this

修改:正如其他人在下面提到的,css hyphens现在可以使用,但不可行(不在Chrome中)。另外,css4 offers even more control

答案 1 :(得分:25)

目前浏览器中的

text-align: justify shouldn't be used。他们不擅长处理内部的细节,输出最终包含大量河流,并且不支持hyphenation(软连字符除外)。

上面的

注意是在4。5年前写的。事情正在慢慢改变...... http://caniuse.com/#feat=css-hyphens

编辑: 在这个答案的评论中引起了我的注意Hyphenator。看起来它使文本对齐值得使用,查看使用它的网站。在使用此脚本之前,您可能希望使用javascript来应用text-align justify,以便那些没有javascript的人不会被捕获。

编辑2: CSS现在允许hyphenation具有hyphens属性[browser support]。 PPK现在对add it to your stylesheets说,而Eric Meyer说just add it for mobile

编辑3: A good little overview我们现在可以获得的东西,有一些SASS。

答案 2 :(得分:13)

其他人提出的关于证明对齐的问题在窄列中更为普遍。如果您的列相对于字体和其他参数的大小足够宽,则可以证明文本的合理性。假设您希望平均每行至少12到15个单词。越多越好。

答案 3 :(得分:6)

没有技术理由不 - 这纯粹是一个设计决定。很多人发现合理的文字难以阅读,但我想这取决于你的情况。虽然它适用于打印,但一般来说,网页浏览器无法对文本的最终输出进行足够的控制,以保证您所服务的内容在某些人的屏幕上看起来不像垃圾。

您最好的选择是避免辩解。

答案 4 :(得分:4)

我无法想出一个令人信服的理由,为什么不为文本辩护 - 在某一点上,内容的数量和宽度几乎要求它是合理的。当然,你会遇到包含某些单词组合的内容的问题,但在我看来,如果你看到河流和单词之间异常大的空间,你就会有一个完全不同的问题 - 可读性和清晰度。

我会不惜一切代价避免使用中心正文。我认为没有比这更好的网络设计的红旗。

答案 5 :(得分:1)

我更喜欢左对齐(text-align:left),因为它通常更具可读性。读取均匀间隔的单词也更快,所以我听到了。除非你有使用对齐的风格理由,否则请保持左,右或中心。特别是对于正文,请使用left。 (实际上,你想要另一个方向的文字“向前”(例如希伯来语)......)

答案 6 :(得分:1)

像任何网页设计问题一样......这取决于。正如所建议的那样,合理的文本通常不会在窄列中看起来很好。我建议不要将它作为侧边栏的一般规则,因为侧边栏通常很窄。

以每行经常推荐的10个单词(或高于该数字的任何数量)进行正文复制时,您可能能够使用合理的文本,并且在大多数情况下看起来相当不错,除非您使用了很多非常长的单词和/或字符串。

我认为我之前已经在StackOverflow上使用了这个网站,但是Jon Tan在他的正文中使用了合理的文本(在文章中)并且99.99%的时间看起来很棒。

答案 7 :(得分:1)

如果没有连字符,则不应使用对齐。这是一个PHP based hyphenation library,以及一个WordPress插件库的端口:wp-Typography

答案 8 :(得分:0)

我认为它在打印上完全没问题,但是由于缺乏对间距和连字符的精细控制,它在大多数Web浏览器上都很笨拙。在某些情况下,排版人员甚至可以在字母间距或字体收缩方面略微发挥作用,因为页面/列(至少在杂志中)可以进行微调。

答案 9 :(得分:0)

呃......不......!

[严重] WordPress使用了对齐,我认为这是否是一个非常强烈的声明,无论它是否会降低可读性......

答案 10 :(得分:0)

您还可以使用text-justify:newspaper。 text-justify css标签可以帮助您控制在证明

时包装文本的方式

答案 11 :(得分:0)

应该提到的是,至少版本8的Internet Explorer(至少)无法正确呈现text-align: justify。相反,它被解释为text-align: center

以下是更多信息:text-align: justify

让我有些头疼,找出为什么IE保持集中的东西。也许它会节省一些时间。

答案 12 :(得分:0)

文本对齐方式可以通过多种方式完成。

定义的一对:调整单词之间的间距是“跟踪”调整字符之间的间距是“紧缩”好的布局程序会自动进行某些紧缩,并且会因字母对而异。变量va的字距可精确地比xa更紧。字距提示表中内置了良好的字体,以帮助完成此过程。

在等宽字体的早期,它是通过在单词之间插入多余的空格来完成的。这使得输出看起来很笨拙。如果行尾有4个空格,行中有6个空格,则其中4个将成为双倍空格。

Monospace字体不合理。

对于可变宽度字体,我们有em空格,en空格等,因此可以更好地分配空间。

我认为这是大多数浏览器现在所在的位置。在大多数情况下,它运作良好。为了使其正常运行,需要满足以下条件:

  • 您在一行中需要合理数量的单词。
  • 该行末尾的大词可能会引起问题。

英语平均单词为5个字符。因此,平均而言,您将有5个字符(5个字符的单词加上空格不适合,因此会碰到下一行)

如果一行上有10个单词,则需要在每个单词间的空白处增加大约一半的标准空间。

如果最后一个单词很长,例如“头痛”,并且没有空间,那么现在您可以分配10个空间。这看起来很糟。

这是连字词典起作用的地方。断字可以通过算法来完成,但是有足够的例外可以使使用字典有很大帮助。 (对于不在词典中的单词,软连字符有一个特殊字符­。)

连字符可以分割单词,使行填充更均匀。

凭经验,我认为65 em的行长是一个不错的选择。很多时候,这使每行11-13个单词。

另一种证明理由的方法是在字符之间划分空格。这样可以避免上面的一些问题,但是如果您在不足的行中分配大量空间,仍然显得很奇怪。您会时不时地在报纸上看到这一点,每个单词之间似乎有一个空格。对于更长的行,这是一个很好的论据。

好的排版程序(InDesign,* TeX,Framemaker)会在字间距中加上额外的空间,并在字符之间增加一些微小的空间。

该代码块上有一个新的孩子,text-justify可以在CSS中用于修改text-align的使用:justify。名义上它接受选项

  • 自动(默认)
  • 密码
  • 字符间(+由于遗留原因而分发)
  • 无人

可以使用https://caniuse.com/#search=text-justify CSS工作组https://drafts.csswg.org/css-text-3/#text-justify-property

CanIuse目前仅报告Firefox的合规性,Chrome支持它,但要求您启用实验性功能。 CanIuse声称支持是错误的。转到Chromium错误跟踪网站,声称它已修复。去搞清楚。还没测试。

其他实用点:

我对网站的样式表进行了四处更改:

  • 最大线长为65 rem
  • 正文字体增加到110%
  • 领先增长到125%
  • 纯文字。

结果是网站时间和每个会话的页面翻了一番。

轶事,但可能值得您自己测试。