Angular Material - 更改所选垫子列表选项的颜色

Angular Material - Change color of mat-list-option on selected

如何更改 mat-list-option 中所选选项的颜色? 现在我有这样的东西:

当前列表

我想把整个选项或卡片'on select'的颜色改成绿色。像这样:

我的代码是这样的:

<mat-selection-list #list>
    <mat-list-option *ngFor="let yuvak of yuvaks">
    {yuvak.name}
    {yuvak.phonenumber}
     </mat-list-option>
</mat-selection-list>

下拉:

mat-list-optionmat-option.mat-active 选项激活时触发,mat-option.mat-selected 选项被 selected 时触发。将以下内容添加到您的 CSS 以修改活动或 selected 样式,具体取决于您的需要。

.mat-option.mat-active {
  background: blue !important;
}

.mat-option.mat-selected {
  background: red !important;
}

工作Demo

选择列表:

select离子列表有aria-selected属性,默认为false。如果您 select 该项目,它会更改为 true。您只需按如下方式设置 CSS:

.mat-list-option[aria-selected="true"] {
  background: rgba(200, 210, 90, 0.7);
}

工作Demo

您可以使用 mat-list-option 标签中的 aria-selected="true" 属性来定位所选选项,
并为其提供相应的 css 属性。

mat-list-option[aria-selected="true"] {
  background: rgba(0, 139, 139, 0.7);
}

Stackblitz Working Demo

接受的答案工作正常,但它使用了硬编码颜色值 (background: rgba(0, 139, 139, 0.7))。 如果您决定切换到另一个预构建 material 主题或使用自定义主题(如 Theming your Angular Material app 页所述),这种方法实际上会破坏您的样式和颜色。

因此,如果您使用 SCSS,则可以在组件的样式文件中使用以下代码:

@import '~@angular/material/theming';

mat-list-option[aria-selected="true"] {
  background: mat-color($mat-light-theme-background, hover, 0.12);
}

以上代码改编自mat-select options - 这样,您将在整个应用程序中具有一致的外观: .mat-option.mat-selected:not(.mat-option-multiple) { background: mat-color($background, hover, 0.12);}

演示https://stackblitz.com/edit/material-selection-list-5-0-0-selection-color-change-qaq1xr

或者,如果您使用深色主题,请按如下方式更改代码:

mat-list-option[aria-selected="true"] {
  background: mat-color($mat-dark-theme-background, hover, 0.12);
}

演示https://stackblitz.com/edit/material-selection-list-5-0-0-selection-color-change-w8beng

如果你只想使用自定义颜色,我建议从 Material Specs, that are also exposed in Angular Material Design scss 中选择一个。

$primaryPalette: mat-palette($mat-green);

mat-list-option[aria-selected="true"] {
  background: mat-color($primaryPalette, 500);
}

演示https://stackblitz.com/edit/material-selection-list-5-0-0-selection-color-change-tt3nyj

有时使用 [aria-selected] 似乎也 'obtuse'。

您还可以获取节点的选定状态并根据需要使用它。

示例 1:您有一个需要将状态传递给的子组件

<mat-list-option #option>

   <app-custom-list-option-widget [selected]="option.selected"></app-custom-list-option-widget>

</mat-list-option>

示例 2:您想设置自定义 css class 而不是使用 [aria-selected]

.is-selected { color: red; }

然后在模板中:

<mat-list-option #option>

   <span [class.is-selected]="option.selected"> Option text </span>

</mat-list-option>

对于 mat-list-option 属性 css 更改,

更改悬停 css :

   .mat-list-option:hover {
      width: 270px!important;
    }

更改 OnActive css:

 .mat-list-option[aria-selected="true"] {
      width: 270px!important;
    }
    .mat-list-option:active,
    .mat-list-text:active{
    background-color: none!important;
    }