# CSS实现中文两端对齐
本文介绍了实现中文文本两端对齐的方法。
遇到需要设置中文两端对齐的需求,如下所示:
当设置 text-align:justify
确并没有实现实现两端对齐的效果,查阅过程中看到鑫大 (opens new window)的说明如下:
要理解原理,我们首先要搞清楚文本的两端对齐声明
text-align:justify
起作用的本质。首先,大家要知道,text-align:justify
是专门为英文设计的,谁叫CSS是老外发明的呢,用来实现英文语句的两端对齐。注意这里的,是语句的对齐。大家应该都知道,英文语句是一个单词一个单词组合而成的,每个单词之前使用空格分隔。
text-align:justify
之所以可以让英文段落两端对齐,那是因为每个英文单词之前那个透明看不见的空格被拉伸了。注意,是空格被拉伸了,对,只有空格。因此,当我们写下一段洋洋洒洒中文内容的时候,text-align:justify
是没有任何作用的,跟没设置没任何区别。为什么呢?很简单,因为中文是一个一个汉字,汉字之间是没有空格的,自然也就不能拉伸,自然也就不能两端对齐。怎么办呢?难道中文就不行了吗? 当然不是!既然正常的中文文字之间没有空格,我们自己加一点不就好了。例如下面代码:
这里鑫大的使用方法还需要使用 JavaScript
代码获取当前字符串然后进行通过以下操作加入空格,就可实现
"宁泽涛小鲜肉".split("").join(" ");
1
这里我们如果想要使用纯 CSS
的方式,则还需要使用 text-justify
样式
- auto : 允许浏览器用户代理确定使用的两端对齐法则
- inter-word : 通过增加字之间的空格对齐文本。该行为是对齐所有文本行最快的方法。它的两端对齐行为对段落的最后一行无效
- newspaper : 通过增加或减少字或字母之间的空格对齐文本。是用于拉丁文字母表两端对齐的最精确格式
- distribute : 处理空格很像newspaper,适用于东亚文档。尤其是泰国
- distribute-all-lines : 两端对齐行的方式与distribute相同,也同样不包含两段对齐段落的最后一行。适用于表意字文档
- inter-ideograph : 为表意字文本提供完全两端对齐。他增加或减少表意字和词间的空格
但chrome不识别inter-ideograph属性, 所以不能使用以下方法:
text-justify: inter-ideograph;
text-align: justify;
1
2
2
然后经过同事的讲解得到了解决办法,具体详解请见博客 (opens new window)
解决方法的 css
样式:
p {
color: #999999;
margin-bottom: .25rem;
span {
width: 1.2rem;
height: .28rem;
line-height: .28rem;
display: inline-block;
text-align: justify;
text-align-last: justify;
}
span::after {
content: '';
width: 100%;
position: absolute;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
html
文本内容:
<p> <span>姓 名</span>:李然 </p>
<p><span>性 别</span>:女</p>
1
2
2
效果如图: