zoukankan      html  css  js  c++  java
  • inline-block text-align: justify 实现自适应布局, 当子inline-block之间没有空格时失效及原因

      对于一个父container 可以设置其text-align: justify 使得其内部的文本自动两端对齐, 基于这个特性把内部的子标签设置为inline-block就能实现内部的子dom自动两端对齐。

      

    <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的代码, 改成这样

    <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 在解释源文件中的 回车 换行 空格(连续的1~n)的时候都是按照一个 white-space 来渲染的, 所以当上面html中的 .child 之间没有任何这类型字符的时候, 没有white-space来用于调整, text-align: justify 失效!

    找到的一个规范文档: http://www.w3school.com.cn/tiy/c.asp?f=css_text-justify&p=7 当中机制其实比较复杂, white-space的处理还受到 css white-space 的影响, 上文中探讨的是默认情况下的表现

    后记:

      因为在用angular2开发的时候, 使用了*ngFor指令, 并且我希望能用 inline-box 和 text-align: justify 去实现内联盒子的自动两端对齐, 结果因为*ngFor生成出来的html, 子标签之间是没有其他符号像: <div></div><div></div><div></div><div></div> 紧挨着的, 结果导致了无法失效预期的效果, 花了数个小时调试找原因。

  • 相关阅读:
    Eclipse 的单步调试
    CALayer快速入门
    UITableView快速入门
    iOS程序启动原理
    iOS触摸事件
    UITableViewCell重用和性能优化
    Autolayout
    iOS适配
    NSTimer
    UIScrollView
  • 原文地址:https://www.cnblogs.com/mahong-shaojiu-ruby/p/6524600.html
Copyright © 2011-2022 走看看