CSS实现文字分散对齐
实现文字在标签中分散对齐首先要认识两个CSS属性,那就是text-align和text-align-last
1. text-align 属性规定元素中的文本的水平对齐方式。
该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式。通过允许用户代理调整行内容中字母和字之间的间隔,可以支持值 justify;不同用户代理可能会得到不同的结果。
语法
text-align: left|right|center|justify|initial|inherit;
属性值
值 | 描述 |
---|---|
left | 把文本排列到左边。默认值:由浏览器决定。 |
right | 把文本排列到右边。 |
center | 把文本排列到中间。 |
justify | 实现两端对齐文本效果。 |
inherit | 规定应该从父元素继承 text-align 属性的值。 |
值 justify
最后一个水平对齐属性是 justify,它会带来自己的一些问题。
值 justify 可以使文本的两端都对齐。在两端对齐文本中,文本行的左右两端都放在父元素的内边界上。然后,调整单词和字母间的间隔,使各行的长度恰好相等。您也许已经注意到了,两端对齐文本在打印领域很常见。不过在 CSS 中,还需要多做些考虑。
要由用户代理(而不是 CSS)来确定两端对齐文本如何拉伸,以填满父元素左右边界之间的空间。例如,有些浏览器可能只在单词之间增加额外的空间,而另外一些浏览器可能会平均分布字母间的额外空间(不过 CSS 规范特别指出,如果 letter-spacing 属性指定为一个长度值,“用户代理不能进一步增加或减少字符间的空间”)。还有一些用户代理可能会减少某些行的空间,使文本挤得更紧密。所有这些做法都会影响元素的外观,甚至改变其高度,这取决于用户代理的对齐选择影响了多少文本行。
CSS 也没有指定应当如何处理连字符(注1)。大多数两端对齐文本都使用连字符将长单词分开放在两行上,从而缩小单词之间的间隔,改善文本行的外观。不过,由于 CSS 没有定义连字符行为,用户代理不太可能自动加连字符。因此,在 CSS 中,两端对齐文本看上去没有打印出来好看,特别是元素可能太窄,以至于每行只能放下几个单词。当然,使用窄设计元素是可以的,不过要当心相应的缺点。
注1:CSS 中没有说明如何处理连字符,因为不同的语言有不同的连字符规则。规范没有尝试去调和这样一些很可能不完备的规则,而是干脆不提这个问题。
2.text-align-last 属性
text-align-last 属性规定如何对齐文本的最后一行。
请注意,text-align-last 属性设置的是被选元素内的所有最末行。所以,如果一个 <div> 中有三个段落,text-align-last 会应用于每段的最后一行。如需在容器中的最后一段上使用 text-align-last,您可使用 :last child,请看下面的例子。
注释:在 Edge/Internet Explorer 中,text-align-last 属性仅适用于具有 "text-align: justify" 的文本。
CSS 语法
属性值
值 | 描述 |
---|---|
auto | 默认值。每一行的对齐规则由 text-align 的值来确定。当 text-align 的值是 justify,text-align-last 的表现和设置了 start 的表现是一样的。 |
left | 最后一行向左对齐。 |
right | 最后一行向右对齐。 |
center | 最后一行居中对齐。 |
justify | 最后一行文字的开头与内容盒的左侧对齐,末尾与右侧对齐。 |
start | 最后一行在行起点对齐。如果 text-direction 为从左到右,则左对齐,如果 text-direction 为从右到左,则右对齐。 |
end | 最后一行在行末尾对齐。如果 text-direction 为从左到右,则右对齐,如果 text-direction 为从右到左,则左对齐。 |
initial | 将此属性设置为其默认值。参阅 initial。 |
inherit | 从其父元素继承此属性。参阅 inherit。 |
实例
view {
width: 100%;
text-align: justify;
text-align-last: justify;
}