Чтобы получить макет, который вы описали, мне пришлось немного подкорректировать ваш код. Пожалуйста, обратитесь к этому stackblitz для рабочего примера. Я пытался использовать как можно больше @angular/flex-layout
и как можно меньше CSS.
РЕДАКТИРОВАТЬ: скорректировать стек в соответствии с комментарием / следующий вопрос . Изменения объясняются в моем ответе на последующий вопрос.
Объяснение
Прежде всего вам не нужно размещать кнопку внутри цикла продуктов. Поэтому вы можете изменить структуру следующим образом:
<div class="container">
<mat-card>
<!-- your button content -->
</mat-card>
<mat-card>
<!-- the loop -->
</mat-card>
</div>
Тогда вам нужно применить правильные атрибуты flex-layout.
Поскольку кнопка находится вне цикла, вам необходимо определить атрибуты макета для контейнера:
<div class="container" fxLayout="row wrap" fxLayoutAlign="center center" fxLayoutGap="25px"> ... </div>
Для того, чтобы стилизовать матовую карточку, содержащую кнопку, так же, как и матовые карточки, содержащие товары, ваша кнопка и ваш цикл товаров должны иметь одинаковую ширину, которую можно определить с помощью атрибута fxFlex
, например :
<mat-card fxFlex="180px" ... class="product"> <!-- button content --> </mat-card>
<mat-card fxFlex="180px" ... class="product"> <!-- loop content --> </mat-card>
Для всех стилей, которые не могут быть определены с помощью flex-layout, будет использоваться класс под названием "product".
Чтобы сделать mat-card
, содержащую кнопку выше, чем продукты, можно использовать CSS:
.product{
min-height: 250px;
margin-bottom: 25px; /* same as fxLayoutGap for even distribution */
/* additional styling */
}
Имейте в виду, что если вы используете решение min-height
, ваша кнопка может быть меньше, чем продукты, если высота карточек продуктов превышает 250px.
Чтобы кнопка всегда была такой же высокой, как у продуктов, которые вы могли бы использовать fxLayoutAlign="center stretch"
вместо fxLayoutAlign="center center"
, но все мат-карты будут уменьшаться и увеличиваться по высоте в зависимости от ширины окна. Это может быть не то, что вы хотите.