text-align和text-align-last的区别

831 阅读1分钟

在做项目的时候,发现设置text-align不生效,后来设置了text-align-last生效了,今天查了一下两者的区别

问题回顾

代码如下,text-align的值为left、right、center时都能正常显示,但是唯独justify不生效,如果改为text-align-last:justify,就可以正常显示了

<style>
  .justufy{
    display: inline-block;
    width: 80px;
    text-align: justify;
  }
</style>
<form>
    <label for="name" class="justufy">用户名</label>
    <input type="text">
    <br>
    <label for="password" class="justufy">密码</label>
    <input type="password">
</form>

问题分析

首先看一下MDN上对text-align和text-align-last的定义:

text-align 定义行内内容(例如文字)如何相对它的块父元素对齐。text-align 并不控制块元素自己的对齐,只控制它的行内内容的对齐。

text-align-last 描述的是一段文本中最后一行在被强制换行之前的对齐规则。 text-align-last的默认值为auto,经测试发现,当text-align(以下简称t)设置为left时,text-align-last(以下简称l)继承left;t的值为right时,l继承right;t的值为center时,l继承center;但是,当t的值为justify时,l的值为left。也就是说,justify的值text-align-last是不继承的,必须手动设置。

当内容只有一行时,设置text-align:justify不生效,我猜测是一行也即最后一行,所以必须设置text-align-last