如何在 ionic 中将 collection-repeat 中的项目居中?

How to center items in a collection-repeat in ionic?

我正在使用 collection-repeat(来自离子框架)在我的应用程序中显示信封列表。效果很好,但我想 fine-tune 布局。每个信封为 150 像素 x 80 像素并且它是流动的(因此更宽的显示器将有 3 或 4 或 5 列)。

我计算了需要添加到左侧以使网格居中的填充量,但我不知道如何更新 DOM(我宁愿不使用 jQuery)。有什么建议吗?

这是我的 HTML 模板:

<ion-content has-tabs="true">
  <div class="envelope-wrapper"
      collection-repeat="envelope in envelopes"
      collection-item-width="150"
      collection-item-height="80">
    <div class="envelope" style="background: {{ envelope.color }}">
      <div class="name">{{ envelope.name }}</div>
      <div class="amount">{{ envelope.amount | humanMoney }}</div>
    </div>
  </div>
</ion-content>

这是我的 SCSS:

.envelope-wrapper {
  padding: 4px;
  height: 80px;
  width: 150px;

  .envelope {
    height: 100%;
    width: 100%;
    background: #eee;
    border: 1px solid rgba(0, 0, 0, .35);
    border-bottom: 1px solid rgba(0, 0, 0, .75);
    box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, .5), 0 1px 3px #ccc;

    .name { ... }
    .amount { ... }
  }
}

这是渲染后的样子。注意右侧所有的白色 space。正如我所说,我已经计算出 space 的宽度并且我知道我需要在左侧填充的像素数,但我就是不知道如何添加左侧填充。

只需放置另一个包装器 div 作为 .envelope-wrapper 的父级,您正试图直接在集合项中设置样式,其中有一个 position: absolute; 属性,它将元素定位在 DOM 的预先计算的部分中,不影响兄弟元素,因此应用了填充,但不是按需要。 让每个集合元素的宽度为 50% 并在其中工作。

<!-- Completed the code with the updated directives and attributes -->

<ion-content has-tabs="true">
  <ion-list>      
    <!--if you want a 10px margin bottom-->
    <ion-item collection-repeat="envelope in envelopes" item-width="50%" item-height="90">

      <div class="envelope-wrapper"
        <div class="envelope" style="background: {{ envelope.color }}">
          <div class="name">{{ envelope.name }}</div>
          <div class="amount">{{ envelope.amount | humanMoney }}</div>
        </div>
      </div>
    </ion-item>
  </ion-list>
</ion-content>