对于一个父container 能够设置其text-align: justify 使得其内部的文本自动两端对齐, 基于这个特性把内部的子标签设置为inline-block就能实现内部的子dom自动两端对齐。css
<style> .father{ position: absolute; left: 100px; top: 100px; width: 200px; /* 注意这里font-size为0 消除了white-space的宽度 */ font-size: 0; /* 子标签设置inline-block 配合justify 实现自适应 */ text-align: justify; border: 1px solid red; } /* 这样人工的创造一个换行 */ .father::after{ content: ' '; width: 100%; display: inline-block; } .father .child{ display: inline-block; font-size: 10pt; border: 1px solid blue; } </style> <div class="father"> <div class="child">子1</div> <div class="child">子2</div> <div class="child">子3</div> <div class="child">子4</div> </div>
可是若是咱们改变html的代码, 改为这样html
<div class="father"> <div class="child">子1</div><div class="child">子2</div><div class="child">子3</div><div class="child">子4</div> </div>
就会发现本来均匀分布的子dom 如今所有挤到左边去了, text-align: justify 失效了。查阅css相关规范text-align: justify 默认状况下是经过调整 inline-box 之间的 white-space 的宽度, 即经过对 white-space 的拉伸或压缩实现两端对齐, 这里的white-space其实是广义的, html 在解释源文件中的 回车 换行 \t 空格(连续的1~n)的时候都是按照一个 white-space 来渲染的, 因此当上面html中的 .child 之间没有任何这类型字符的时候, 没有white-space来用于调整, text-align: justify 失效!angular2
找到的一个规范文档: http://www.w3school.com.cn/tiy/c.asp?f=css_text-justify&p=7 当中机制其实比较复杂, white-space的处理还受到 css white-space 的影响, 上文中探讨的是默认状况下的表现dom
后记:spa
由于在用angular2开发的时候, 使用了*ngFor指令, 而且我但愿能用 inline-box 和 text-align: justify 去实现内联盒子的自动两端对齐, 结果由于*ngFor生成出来的html, 子标签之间是没有其余符号像: <div></div><div></div><div></div><div></div> 紧挨着的, 结果致使了没法失效预期的效果, 花了数个小时调试找缘由。调试