代码之家  ›  专栏  ›  技术社区  ›  Chris

层次缩进

  •  -2
  • Chris  · 技术社区  · 6 年前

    不知道用什么方法来描述它,但一张图片应该有用。我有一个树结构的数据,我想用不同层次的缩进来显示它。

    [1                        ]
        [1a                   ]
            [1ai              ]
        [1b                   ]
    [2                        ]
    [3                        ]
        [3a                   ]
    

    关键是左缩进右对齐。

    通过编程增加每个元素左边的填充对上半部分有效,但可能不是正确的方法。

    export class HierarchicalJobNodeComponent{
    
      @Input() job: JobHierarchical;
    
      @Input() depth: number;
    
    
      pxDepth(): string {
        return this.depth + "px";
      }
    
      style(): Object {
        return  { 'margin-left': this.depth + "px", 'width':'100%' };
      }
    }
    

    html格式

    <div class="node container" [ngStyle]="style()">
      <div class="row">
        <div class="col-sm-3">{{job.job_JobId}}</div>
        <div class="col-sm-1">{{job.job_Status}}</div>
        <div class="col-sm-8">{{job.jobDefinition_SearchName}}</div>
      </div>
      <div class="child row">
        <div *ngFor="let child of job.childJobs">
          <hjobnode [depth]="depth+20" [job]="child"></hjobnode>
        </div>
      </div>
    </div>
    

    css格式

      style(): Object {
        return  { 'padding-left': this.depth + "px", 'width':'100%' };
      }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   lumio    6 年前

    你使用填充的方法是正确的。最简单的方法是将这些项目相互嵌套,这样就不需要考虑深度。

    作为克里斯W。指出,这可以很容易地表示为一个列表,使用 ul (或 ol li S

    ul,
    li {
      margin: 0;
      padding: 0;
      list-style: none;
    }
    
    li>ul {
      padding-left: 20px;
    }
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>
        <ul>
          <li>Item 2.1</li>
          <li>
            <ul>
              <li>Item 2.1.1</li>
            </ul>
          </li>
        </ul>
      </li>
      
      <li>
        Item 3
        <!-- you can even nest the ul directly inside an item !-->
        <ul>
          <li>Item 3.1</li>
        </ul>
      </li>
    </ul>