Angular 和 NGX-Masonry - 显示问题

标签 angular angular-material masonry

我想将 Masonry 集成到 Angular 应用程序中。 我安装了ngx-masonry library .
问题:渲染时,我的页面在标题和砖石内容之间存在巨大差距。 我的预期行为:每张卡片都应该从最顶部开始。

Screenshot with percentage width like it should be at the end (第一张卡是从底部开始的灰色框)

低于该间隙,卡片将按预期对齐。

这是我的 html 文件中的代码(经过简化,实际上我在 width2 中有一个项目,在“正常”宽度中有 7 个项目。我希望这就足够了)

<div class="grid-container">
  <h1 class="mat-h1">Headline</h1>
  <ngx-masonry [options]="{itemSelector: '.masonry-item', columnWidth: '.grid-sizer', percentPosition: true }">

    <div class="grid-sizer"></div>

    <ngxMasonryItem class="masonry-item masonry-item--width2">
      <app-card id="card1" title="card 1 in full width">
        <app-card1> </app-card1>
      </app-card>
    </ngxMasonryItem>

    <ngxMasonryItem class="masonry-item">
      <app-card id="card2" title="card 2 with other width">
        <app-card2></app-card2>
      </app-card>
    </ngxMasonryItem>
</ngx-masonry>
<div>

这是我的 sass 文件中的代码:

.grid-sizer, 
.masonry-item {
  width: 50%;
}

.masonry-item--width2 {
  width: 100%;
}

masonry 和标题标签周围的网格容器 div 没有任何自定义样式。

我没有对 masonry 的 component.ts 进行任何更改(仅针对其他内容相关的内容,我不允许共享)。

我尝试为所有项目指定固定宽度,而不是使用百分比。 我对 200 像素内每个项目的结果也非常不满意: Example with fix width

我找不到任何有关此类问题的信息。

如果这很重要:我的项目中也包含了 Angular Material 。

感谢您的帮助,如果有任何不清楚的地方,我很乐意分享更多信息。

最佳答案

我找到了解决方案:

使用@ViewChild(NgxMasonryComponent) masonry: NgxMasonryComponent;,您可以访问masonry对象并单独调用函数。

并使用 this.masonry.reloadItems();this.masonry.layout(); 您可以“刷新”布局,这对我来说就像魅力。

reloadMasonryLayout() {
    if (this.masonry !== undefined) {
      this.masonry.reloadItems();
      this.masonry.layout();
    }
  }

我在 ngOnInit 中以及每当布局发生变化(由于卡片顺序)时调用此函数

I found this solution in a demo on github

关于Angular 和 NGX-Masonry - 显示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65308292/

相关文章:

angularjs - Angular2 FormBuilder : Using 'this' in a custom validator

html - 使用 Angular-Material 进行简单的 CSS 修改

javascript - 未应用 Angular Material 垫扩展面板主体样式

ios - View 的框架不改变

javascript - 我的 masonry 图像仅显示在一个列中

html - 使用 Angular 2 以模态重置表单

html - Material 分页下拉列表不合适

angular - 无法在新的 Angular-8 应用程序中使用 Flex

javascript - Angular - 在内部导航上通过 CDN 加载外部脚本

Angular 2 中带有 header 和参数的 HTTP GET 请求