资讯专栏INFORMATION COLUMN

探索发现:CSS实现中文两端对齐

luffyZh / 785人阅读

摘要:今天在搜索实现中文两端对齐的解决方法时,偶然发现了这个我遇到问题是看不到效果,无论是英文还是中文,在和下都不起作用。首先,大家要知道,是专门为英文设计的,谁叫是老外发明的呢,用来实现英文语句的两端对齐。

今天在搜索“CSS实现中文两端对齐”的解决方法时,偶然发现了这个hack

我遇到问题是:看不到效果,无论是英文还是中文,在IE和chrome下都不起作用。还好在StackOverflow上找到了解决方法 :)

样式:

div.justify 
{ 
  text-align: justify; width:200px; font-size:15px; color:red; 
  border:1px solid blue; height:18px;
}
div.justify > span 
{ 
  display: inline-block /* Opera */; 
  padding-left: 99%; 
}

HTML:

hello, text justify.

hello, text justify.

中 文 两 端 对 齐

中 文 两 端 对 齐

不明所以,在旭哥的文章看到的关于text-align:justify的解释是这样的

要理解原理,我们首先要搞清楚文本的两端对齐声明text-align:justify起作用的本质。首先,大家要知道,text-align:justify是专门为英文设计的,谁叫CSS是老外发明的呢,用来实现英文语句的两端对齐。注意这里的,是语句的对齐。大家应该都知道,英文语句是一个单词一个单词组合而成的,每个单词之前使用空格分隔。

text-align:justify之所以可以让英文段落两端对齐,那是因为每个英文单词之前那个透明看不见的空格被拉伸了。注意,是空格被拉伸了,对,只有空格。因此,当我们写下一段洋洋洒洒中文内容的时候,text-align:justify是没有任何作用的,跟没设置没任何区别。为什么呢?很简单,因为中文是一个一个汉字,汉字之间是没有空格的,自然也就不能拉伸,自然也就不能两端对齐。怎么办呢?难道中文就不行了吗?
当然不是!既然正常的中文文字之间没有空格,我们自己加一点不就好了。例如下面代码:

感觉还是无法理解这个hack的原理。求教!

然后又去w3school上查阅了关于text-align:justify的解释:

justify:实现两端对齐文本效果,它会带来自己的一些问题。

justify 可以使文本的两端都对齐。在两端对齐文本中,文本行的左右两端都放在父元素的内边界上。然后,调整单词和字母间的间隔,使各行的长度恰好相等。您也许已经注意到了,两端对齐文本在打印领域很常见。不过在 CSS 中,还需要多做些考虑。

要由用户代理(而不是 CSS)来确定两端对齐文本如何拉伸,以填满父元素左右边界之间的空间。例如,有些浏览器可能只在单词之间增加额外的空间,而另外一些浏览器可能会平均分布字母间的额外空间(不过 CSS 规范特别指出,如果 letter-spacing 属性指定为一个长度值,“用户代理不能进一步增加或减少字符间的空间”)。还有一些用户代理可能会减少某些行的空间,使文本挤得更紧密。所有这些做法都会影响元素的外观,甚至改变其高度,这取决于用户代理的对齐选择影响了多少文本行。

CSS 也没有指定应当如何处理连字符(注1)。大多数两端对齐文本都使用连字符将长单词分开放在两行上,从而缩小单词之间的间隔,改善文本行的外观。不过,由于 CSS 没有定义连字符行为,用户代理不太可能自动加连字符。因此,在 CSS 中,两端对齐文本看上去没有打印出来好看,特别是元素可能太窄,以至于每行只能放下几个单词。当然,使用窄设计元素是可以的,不过要当心相应的缺点。

注1:CSS 中没有说明如何处理连字符,因为不同的语言有不同的连字符规则。规范没有尝试去调和这样一些很可能不完备的规则,而是干脆不提这个问题。

还是没有找到合理解释。只能暂时先记录在这里了。

附:用伪元素修改:

.field-title{
    width: 65px;
    height:40px;
    text-align:justify;
    &:after{//文字两端对齐
        content: "";
        display: inline-block;
        padding-left: 99%;
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/49896.html

相关文章

  • 探索发现CSS实现中文两端对齐

    摘要:今天在搜索实现中文两端对齐的解决方法时,偶然发现了这个我遇到问题是看不到效果,无论是英文还是中文,在和下都不起作用。首先,大家要知道,是专门为英文设计的,谁叫是老外发明的呢,用来实现英文语句的两端对齐。 今天在搜索CSS实现中文两端对齐的解决方法时,偶然发现了这个hack: 我遇到问题是:看不到效果,无论是英文还是中文,在IE和chrome下都不起作用。还好在StackOverflo...

    Aomine 评论0 收藏0
  • CSS 文字两端对齐的样式怎么写?

    摘要:第二次尝试之前说了看英文原版的文档,好的,我发现了一个很不错的属性值。好东西啊好东西,在的基础上新增了对最后一行的作用。我发现了一个属性叫,它可以控制最后一行的文字对齐。效果就是文章最开始的图片。,我觉得英文版可信度更高吧。 前言 这是一个很短的文章,内容也不多,目的其实在于吐槽MDN文档。 需求 实现下图中的样式: showImg(https://segmentfault.com...

    NSFish 评论0 收藏0
  • CSS实现文字两端对齐

    摘要:后面查阅资料发现可以实现最后一行两端对齐,但似乎兼容性很差不支持最近的项目遇到了这样的需求:(要求标题部分不管文字多少,都必须两端对齐)   如下图: 当时也没有多想直接使用‘ ’进行代替,毕竟产品同学想快一点看到效果,不敢怠慢!不过到第二个页面就傻眼了。   如图: 这很明显‘ ’已经无法满足我了,只好上 。 这里简单说下几种空格的区别:       半角...

    Baaaan 评论0 收藏0
  • CSS 文本控制

    摘要:学习一些文本控制的属性,防止做傻事。是的升级版,当单行文本过长,超过文本边界时自动换行。否则,文本仍然左对齐。 one more time one more chance. 一歩重头学前端, css入门。 学习一些 CSS 文本控制的属性,防止做傻事。请大家对照下面列表检验下: 会的、不会的、似懂非懂的。笔者是一个也不会。 white-space text-overflow: ell...

    Taonce 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<