javascript - 分层缩进

标签 javascript html css angular

不确定描述它的最佳方式,但图片应该可以。我的数据结构为一棵树,我想用不同级别的缩进来显示它。

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

等等

关键是左缩进右对齐。

以编程方式增加每个元素的 padding-left 在前半部分有效,但可能不是正确的方法。

我正在使用递归 Angular 组件,虽然我最初没有提到 Angular b/c 我认为它不一定与解决方案相关。

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%' };
  }

最佳答案

您使用填充的方法是正确的方法。最简单的方法是将这些元素相互嵌套,因此您无需考虑深度。

正如 Chris W. 所指出的,这可以很容易地表示为一个列表,使用 ul(或 ol)和 li

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>

希望对您有所帮助

关于javascript - 分层缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53174348/

相关文章:

javascript - 如何从 JS 中的数组中删除一个子集?

javascript - 在 JavaScript 中匹配开始和结束引号(简单引号)

html - 变换比例在 Safari 上表现得很奇怪

java - 我可以在不更改java代码的情况下在浏览器中打开webview链接吗?

javascript - 和弦和歌词格式问题

javascript - 在 Jquery 中查找与选择器速度

php - 动态自动选择,在其他地方更改图像

javascript - Angular 2 中的多选下拉列表

html - Bootstrap 固定导航栏下方的撇号 float 小部件

css - 如何将任何 div 高度从中间拉伸(stretch)到浏览器窗口的末尾