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


76

有什么理由要避免使用text-align: justify;

它会降低可读性或引起问题吗?


2
对于未来的Google员工:请在接受的答案中进行修改。
2014年

Answers:


61

首先,这纯粹是与设计有关的问题和解决方案。网格的设计指定是否需要对齐文本。我认为仅靠align不会对可用性产生重大影响。导致文字难以辨认的不良排版会降低可用性。就是说,请确保您的字体具有扎实的对比度和间距的良好平衡。字体大小也很重要。

该站点是成功证明在线文本合理的尝试。由于使用CSS无法像使用InDesign那样几乎控制字母和单词之间的空格,因此难以证明文本的正确性,并且行中没有空白的“河流”,这在单词之间的空格发生时会发生超出行之间的间隔。使文本合理化的事情包括:长字,行宽不能容纳足够的字,以及文本和背景颜色之间的对比度过高;它们使河流显得更宽,更明显。

印刷的理想情况是要有一个均匀的文本块,如果斜视该文本块,则该文本块将成为统一的纯色阴影。因此,如果您在白色背景上将文本保持在10px左右和60%的灰色,并且行长约20个字,那么对齐对齐看起来就不会难看。但是请记住,这无助于提高可用性。小而相对较浅的文本使很多人感到烦恼,尤其是年龄较大的读者。

我应该注意,通过­(软连字符)正确地分隔长麻烦的单词(例如超级赞),您可以模仿适当的排版(例如InDesign)。有很多东西可以帮助您做到这一点。我会建议隐藏,操作和显示文本的逻辑,也许要在客户端这样做

编辑:正如下面其他人提到的,css连字符现在是可能的,除非不可行(在Chrome中不行)。另外,css4提供了更多控制权


在高对比度的布局中,河流也更明显。如果您使用较低的对比度-亮度大约是4-5比1,并且还具有一些色相对比度,那么河流的吸引力就不那么明显了。您也可以通过增加领先优势来减少河牌效应。较长的线需要更大的引线以帮助眼睛跟踪。
舍伍德·博茨福德

25

文本对齐:目前不应该在浏览器中使用对齐。它们不善于处理其中的微小细节,并且输出最终包含很多河流,并且不支持连字符(软连字符除外)。

上面的注释写于4.5年前。事情正在慢慢改变... http://caniuse.com/#feat=css-hyphens

编辑: 连字符在此答案的评论中引起了我的注意。看起来它使文本对齐成为值得使用的理由,请查看使用它的网站。您可能需要在使用此脚本之前使用javascript来应用文本对齐方式对齐,以便那些没有javascript的用户不会被抓住。

编辑2: CSS现在允许使用属性[浏览器支持]进行连字符。PPK现在说要将其添加到样式表中,而Eric Meyer说只是将其添加到移动设备中hyphens

编辑3: 通过一些SASS,对我们现在可以使用的内容进行了很好的概述


4
您是否听说过连字符[ code.google.com/p/hyphenator ]?如果您认为值得一提,也许您应该编辑答案以提及它。
ShreevatsaR

我不同意。我喜欢对齐的文本,只要大多数行的长度在50-60 em之间,大多数浏览器就可以做到合理。
舍伍德·博茨福德

13

其他人提出的有关对齐对齐的问题在窄列中更为普遍。如果您的列相对于字体大小和其他参数而言足够宽,则可以对文本进行对齐。假设您平均希望每行最少12到15个字。多多益善。


投票了。但是,为了获得最大的可读性/可读性,目前的推荐似乎是每行约10个字。
安迪·福特

4
如果要更精确,则每行约65个字符。
dylanfm

谢谢,dylanfm。由于它的精度=,这是一种更可靠的方法
Andy Ford

一般说来,这是10个单词的可读性,但根据我的经验,合理的文本有点浅。
allesklar

6

没有技术理由不这样做-纯粹是设计决定。许多人发现合理的文本较难阅读,但我想这取决于您的情况。尽管它可以很好地用于打印,但通常网络浏览器无法对最终的文本输出提供足够的控制,以确保您所提供的内容在某些人的屏幕上看起来不会像废话。

最好的选择是避免合理化。


4

我想不出为什么不对文本进行辩护的令人信服的理由-在某一点上,内容的数量和宽度几乎要求对文本进行辩护。当然,您会遇到由某些单词组合组成的内容的问题,但是在我看来,如果您看到河流和单词之间异常大的空格,那么您将面临完全不同的问题-可读性和清晰度。

我将不惜一切代价避免以居中文本为中心。我认为没有什么比暗恋网页设计更大的危险了。


1

我更喜欢左对齐(text-align:left),因为它通常更具可读性。阅读间隔均匀的单词也更快,所以我听到了。除非您有使用理由的风格上的原因,否则请将其保持在左,右或中心位置。特别是对于正文,请使用left。(实际上,您希望向其他方向(例如希伯来语)输入类似“ forward”的文字...)


1

像任何网页设计问题一样,这取决于。正如已经建议的那样,有理由的文本通常不会在狭窄的栏中看起来很好。我通常建议不要在侧边栏中反对它,因为侧边栏通常很窄。

正文通常建议每行使用10个单词(或大于该数量的单词),您可能可以避免出现正当的文字,并且在大多数情况下看起来都不错,除非您使用了很多篇幅很长的文字。单词和/或字符串。

我想我以前曾在StackOverflow上使用过此网站,但是Jon Tan在他的正文中使用了正当的文本(在文章中),而且99.99%的时间看起来很棒。



0

我认为它在印刷上完全可以,但由于缺乏对间距和连字符的精确控制,因此在大多数Web浏览器上都是笨拙的。在某些情况下,因为可以对页面/列(至少在杂志中)进行微调,所以印刷者甚至可以在字母间距或字体收缩上稍稍发挥作用。


0

恩...不...!

[严重] WordPress使用证明,并且我认为关于它是否会降低可读性这是一个非常有力的声明。


0

您也可以使用text-justify:newspaper。text-justify css标签可帮助您控制对齐时包裹文本的方式


2
text-justify在最新版本的CSS3文本模块草稿中存在,但newspaper不存在(可能永远不存在)的值。此外,这些CSS属性,而不是标签
姜毅

它确实存在-这是“微软”的价值。
J-16 SDiZ 2012年

4
@ J-16SDiZ,所以它可能不存在:P
Sphvn 2012年

2
@YiJiangtext-justify: newspaperCSS3 Text2003 CR中,因此说它永远不存在*并不太准确-不管它一次是否专有。:)
乔丹·格雷

0

应该提到的是,至少8版以上的Internet Explorer无法text-align: justify正确呈现。而是将其解释为text-align: center

这是更多信息:text-align:justify

让我有些头疼,以了解为什么IE始终将内容居中。也许可以节省一些时间。


3
您错过了最重要的部分-它仅对表格标题框起作用。如果这是真实的所有元素那么没有人会使用这个属性
姜毅

对。应该已经读完了...仍然我在IE7中偶然发现了这一点,并且在我的项目中没有使用任何表。奇怪。
频繁的

0

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

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

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

等宽字体不合理。

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

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

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

英文的平均单词是5个字符。因此,平均而言,您将拥有5个字符(5个字符的单词加上空格无法容纳,因此会碰到下一行)

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

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

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

断字可以拆分单词,使行填充更均匀。

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

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

好的排版程序(InDesign,* TeX,Framemaker)将字间距中的多余空间与字符之间的微小多余空间组合在一起。

有一个新成员,text-justify可以在CSS中用于修改text-align的使用:justify。名义上它接受选项

  • 自动(默认)
  • 词间
  • 字符间(+由于遗留原因而分发)
  • 没有

CanIuse https://caniuse.com/#search=text-justify CSS工作组https://drafts.c​​sswg.org/css-text-3/#text-justify-property

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

其他实用点:

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

  • 最大线长为65雷姆
  • 正文字体增加到110%
  • 领先至125%
  • 对齐文本。

结果是网站时间和每个会话的页面数增加了一倍。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.