Angular MatCardHeader: расположите мат-карту-аватар справа

#css #angular-material

#css #angular-материал

Вопрос:

 <mat-card-header>
            <mat-card-title>Shiba Inu</mat-card-title>
            <div mat-card-avatar class="example-header-image"></div>
            <mat-card-subtitle>Dog Breed</mat-card-subtitle>
</mat-card-header>
  

Это помещает mat-card-avatar слева, есть ли какие-либо настройки в заголовке mat-card, которые позволяют перемещать аватар в правый конец заголовка

Комментарии:

1. Вы нашли какое-либо решение для этого?

2. @matsch мы должны использовать гибкое направление с обратным

Ответ №1:

вы можете попробовать это:

 ::ng-deep .mat-card-header{
        flex-direction: row-reverse !important;
}
    
::ng-deep  .mat-card-avatar{
    width: 10%;
}
        
::ng-deep  .mat-card-header-text{
   width: 90%;
}
  

Ответ №2:

Официального способа нет, потому что, если вы видите их исходный код mat-card-header , они сначала размещают аватар, а затем текст.

 <ng-content select="[mat-card-avatar], [matCardAvatar]"></ng-content>
<div class="mat-card-header-text">...</div>
<ng-content></ng-content>
  

Вам нужно переопределить стили вручную. Поскольку это flexbox, вы можете легко переопределить его, не изменяя HTML таким образом.

 <mat-card-header class="mat-card-header-avatar-right">
  <div mat-card-avatar class="example-header-image"></div>
  <mat-card-title>Shiba Inu</mat-card-title>
  <mat-card-subtitle>Dog Breed</mat-card-subtitle>
</mat-card-header>
  
 //SCSS Version
.mat-card-header-avatar-right {
    justify-content: space-between;
    amp;::ng-deep {
        .mat-card-header-text {
            margin-left: 0 !important;
        }
    }
    .mat-card-avatar {
        order: 1;
    }
}
  
 //CSS Version
.mat-card-header-avatar-right {
  justify-content: space-between;
}

.mat-card-header-avatar-right ::ng-deep .mat-card-header-text {
  margin-left: 0 !important;
}

.mat-card-header-avatar-right .mat-card-avatar {
  order: 1;
}