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

今天在搜索“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:

<div class="justify">hello, text justify.</div><br/>
<div class="justify"> hello, text justify.<span></span></div><br/>
<div class="justify">中 文 两 端 对 齐</div><br/>
<div class="justify">中 文 两 端 对 齐<span></span></div>

不明所以,在旭哥的文章看到的关于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%;
    }
}

本文转载于:猿2048探索发现:CSS实现中文两端对齐

原文地址:https://www.cnblogs.com/homehtml/p/12628988.html

时间: 2024-11-09 00:54:28

探索发现:CSS实现中文两端对齐的相关文章

css实现文本两端对齐

要实现文本两端对齐,自然会想到css属性text-align: justify;但是试过之后才发现这个属性没有起到作用,这是为什么呢?难道这个属性是个摆设吗?那肯定不是!一定是自己的问题. 查看html代码才知道,原来text-align: justify;这个css属性要起作用,那么html中模块之间一定要添加(空格.换行符.制表符),例如 <p> <span>专 场:</span> 东方源创文玩收藏拍卖专场 </p> <p> <span

css之文本两端对齐

在进行网页设计时,我们经常会看到这样的样式:文本两端对齐. css为我们提供了一个属性可以实现这样的效果:text-align: justify.不过这个只能用来设置多行文本(除最后一行).如果只有单行的话,是不起效果的.那怎么办呢?这里有两种解决方案: 第一种 借助伪元素或者内联元素使文本不是最后一行.具体代码: <form> <p> <label>用户名</label>: <input type="text"> </

关于文本两端对齐的处理!

<div> <p>对照组1:文档流<span></span></p> <p>对照组2:两端对齐(本组支持谷歌)<span></span></p> <p>对 照 组3:两 端 对 齐 ( 本 组 支 持 谷 歌.火狐 .IE9+)<span></span></p> <p>对照组4:我们不保证内容的正确性.通过使用本站内容随之而来的风险与本站无

可用的CSS文字两端对齐

最近在工作项目中接触到Web界面设计的问题,要实现文字两端对齐的效果.在网上搜索了一下,用的都是类似的技巧: text-align:justify;text-justify:inter-ideograph; 我遇到问题是:看不到效果,无论是英文还是中文,在IE和chrome下都不起作用.还好在StackOverflow上找到了解决方法 :) 样式: 1 div.justify 2 { 3 text-align: justify; width:200px; font-size:15px; colo

css实现两端对齐的3种方法

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="author" content="monicaqin"> <meta name="format-detection" content="telephone=no" /> &

css实现两端对齐~

今天做表单时遇到让上下两个字段对齐的情况,手机号码.用户名. 然后今天在网上找了找相关方法,发现确实是没有什么好的方法解决,特别是当需要兼容的时候.找到了两个我觉得相对还不错的方法: 方法一.是在司徒正美的博客上看到的—— text-align, text-justify: 需要设置 text-align为justify就行了,text-justify的情况复杂些.IE的取值如下: auto :允许浏览器用户代理确定使用的两端对齐法则 inter-word :通过增加字之间的空格对齐文本.该行为

实现段落文字两端对齐的css样式

有时候网站中的文字比较多,虽然为父元素设置了宽度,但是总是会出现两端参差不齐的情况,看起来不整齐.其实实现段落的两端对齐,只需要设置两个css 样式即可. .demo{ text-align: justify; text-justify: inter-ideograph;/*IE*/ } text-justify基本语法 语法:text-justify : auto |inter-word | newspaper | distribute | distribute-all-lines | int

css实现两端对齐效果

CSS实现两端对齐效果 两端对齐,从概念上来说,其实不难理解.如果不明白什么叫两端对齐,可以玩玩word等办公软件. 下面谈谈如何实现文本的两端对齐.我所知道的大概有以下几种方法 text-align w3school指出,text-align用于设置块级元素内文本的水平对齐方式.如果想使inline元素或inline-block元素居中对齐,可以使用text-align: center方法,对于block元素无法使用text-align实现居中对齐.如果想让block元素居中对齐,可以使用ma

css 文本两端对齐

在做表单时我们经常遇到让上下两个字段对齐的情况,比如姓名, 手机号码, 出生地.这样我们就要用到 text-align, text-justify样式了. text-align直接设为justify就行了,text-justify的情况就复杂了,可能有人对它还不熟悉.IE的取值如下: auto :允许浏览器用户代理确定使用的两端对齐法则 inter-word :通过增加字之间的空格对齐文本.该行为是对齐所有文本行最快的方法.它的两端对齐行为对段落的最后一行无效 newspaper : 通过增加或