【问题标题】:Missing tree data with virtual scroll with flex height for angular-tree-component角度树组件的具有弹性高度的虚拟滚动缺少树数据
【发布时间】:2019-09-27 16:44:16
【问题描述】:

我正在尝试为具有虚拟滚动的树使用 flex 高度。但是,当我将树容器设置为 100% 并设置 flex 高度时,滚动期间屏幕上会丢失数据块。

我在这里添加了工作示例https://stackblitz.com/edit/angular-d2mavw

如果我打开最后一个 rootDynamic49 节点,则只有 20 个子节点可见。然而,它有50个孩子。另一方面,当我将高度设置为100px 时,所有的孩子都是可见的。

有没有一种方法可以让我将第一个 div 固定在顶部位置并仅为具有灵活高度的树添加滚动?

【问题讨论】:

    标签: angular tree angular-tree-component


    【解决方案1】:

    当您使用height: 100%; 并展开树时,虚拟滚动的视口高度不会更新到树的新高度。它保持在 px 的值。我们可以完全省略这个 css,而是在 container 中设置 height,使用 display: grid;

    app.component.css

    .container {
        border: 1px solid black;
        display: grid;
        grid-template-rows: auto calc(100vh - 38.4px); // StackBlitz adds 8px padding to body and 'First div' has a height of 22.4px (8 + 8 + 22.4 = 38.4px).
    }
    

    calc(100vh - 38.4px) 需要替换为您想要的高度。在此处使用 % 值似乎与您在 OP 中提到的关于将“第一个 div”固定在顶部位置的内容违反直觉,因为如果给定 div 100% 它将根据其内容和整个 div会滚动到视野之外。

    那么您只需在tree-container 上使用display: inline;,使其适合主div

    angular-tree.component.css

    .tree-container {
        display: inline;
    }
    

    注意:我使用22.4 表示nodeHeight,因为在检查节点时,高度正好是22.4px

    这是StackBlitz 上的一个工作示例。这是相同的preview

    【讨论】:

      猜你喜欢
      • 2019-03-07
      • 1970-01-01
      • 2020-01-21
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 2019-09-09
      • 1970-01-01
      相关资源
      最近更新 更多