更新了下面的“未来”解决方案信息;还没有完全支持。
目前的解决方法(IE8+、FF、Chrome 测试)
看到这个小提琴。
相关CSS
.prevNext {
text-align: justify;
}
.prevNext a {
display: inline-block;
position: relative;
top: 1.2em; /* your line-height */
}
.prevNext:before{
content: '';
display: block;
width: 100%;
margin-bottom: -1.2em; /* your line-height */
}
.prevNext:after {
content: '';
display: inline-block;
width: 100%;
}
解释
具有负下边距的元素display: block
上:before
的 将文本行拉高一个行高,这消除了多余的行,但替换了文本。然后使用元素position: relative
上inline-block
的位移被抵消,但不添加额外的线。
尽管 css 本身不能直接访问line-height
“单位”,但em
在margin-bottom
andtop
设置中的使用很容易适应任何line-height
给定的乘数值之一。所以1.2
, 120%
, or在计算上1.2em
都相等,这使得在这里使用一个很好的选择,因为即使设置了,那么for和将匹配。规范网站外观的良好编码意味着在某些时候应明确定义,因此如果使用任何乘法器方法,则等效单元将给出与. 如果设置为非line-height
em
line-height: 1.2
1.2em
margin-bottom
top
line-height
em
line-height
line-height
em
长度,例如px
,而是可以设置。
使用诸如 LESS 或 SCSS 之类的 css 预处理器绝对拥有一个变量或 mixin 可以帮助保持这些值与适当的line-height
. line-height
,并在此处进行了适当的设置。
更新缩小文本(无空格)问题
Kubi 的评论指出,删除<a>
元素之间的空格的 html 缩小会导致理由失败。标记内的伪空间<a>
没有帮助(但这是意料之中的,因为空间发生在inline-block
元素内部),<wbr>
在标记之间添加一个<a>
没有帮助(可能是因为下一行不需要中断),所以如果需要缩小,然后解决方案是硬编码的不间断空格字符
- 其他空格字符(如细空格和空格)不起作用(令人惊讶)。
接近未来的清洁解决方案
一个webkit
落后于时代的解决方案(在第一次写这篇文章时)是:
.prevNext {
text-align: justify;
-moz-text-align-last: justify;
-webkit-text-align-last: justify; /* not implemented yet, and will not be */
text-align-last: justify; /* IE */
}
它适用于 FF 12.0+ 和 IE8+(IE7 中的错误)。
对于 Webkit,从第 39 版开始(至少,可能在更早的时候已经悄悄出现)它确实支持它而无需-webkit-
扩展,但前提是用户启用了实验性功能(可以在 中完成chrome://flags/#enable-experimental-web-platform-features
)。有传言说版本 41 或 42 应该得到完全支持。由于它还没有得到无缝支持webkit
,它仍然只是部分解决方案。但是,我认为我应该发布它,因为它可能对某些人有用。