我最近读到了一种非常聪明的技术,可以完全按照您的要求进行操作。
简而言之,你只需要使用text-align:justify;
容器元素来实现这一点,并在最后加上一个额外的不可见块。
这是有效的,因为inline-block
元素被视为文本内容的一部分,每个元素实际上都是一个单词。
使用justify
会将文本中的单词展开,以便它们填充元素的整个宽度,并在单词之间留出额外的空间。对于inline-block
元素,这意味着它们之间的间距是均匀的。
我在最后提到了一个额外的隐形块。这是必需的,因为正常text-align:justify
不会证明最后一行文本。对于普通文本,这正是您想要的,但对于对齐inline-block
框,您希望它们全部对齐。
解决方案是在元素列表的末尾添加一个额外的不可见但 100% 宽度的inline-block
元素。这将有效地成为文本的最后一行,因此该justify
技术将适用于您的其余块。
您可以使用:after
伪选择器来创建不可见元素,而无需修改您的标记。
这是您要演示的 jsFiddle 的更新版本:http: //jsfiddle.net/ULQwf/298/
这是更详细解释它的原始文章:http ://www.barrelny.com/blog/text-align-justify-and-rwd/
[编辑]
看到您添加到问题中的图像后的最后一次更新。(我没有更好的答案,但有一些额外的想法可能有用)。
理想情况下,您需要的是一个:last-line
选择器。然后你可以text-align:justify
正文和text-align:center
最后一行。那会做你想要的。
可悲的是,:last-line
is 不是一个有效的选择器(:first-line
is, but not :last-line
),所以这个想法就结束了。
一个稍微更有希望的想法是text-align-last
,它确实作为一个特性存在。这可以完全满足您的要求:
text-align:justify;
text-align-last:center;
完美的。
除了它是非标准的并且对浏览器的支持非常有限。
您可以在 MDN 上阅读有关此处的信息。
我想作为最后的手段,如果你只能接受部分浏览器支持,它可能是你的一个选择。它至少会为您的某些用户获得您想要的东西。但这并不是一个明智的选择。
不过,我的直觉是,这与您将要获得的一样接近。诱人地接近你想要的,但并不完全在那里。我希望我被证明是错的,但我会感到惊讶。不过太糟糕了,因为我想做的事情似乎完全合乎逻辑。