我一直在努力寻找一种方法来根据面板是否展开来动态更改材质设计扩展面板标题的背景颜色。
当面板关闭时,我希望背景颜色为白色,但是当它被展开时,我想将该颜色更改为其他颜色。我没有看到我可以根据这一变化做出的事情,也许我错过了一些东西。我是棱角分明的新人,并且认为我能够将它从[扩展]的设置中解脱出来,但事实并非如此。
mat-accordion
mat-expansion-panel
mat-expansion-panel-header
mat-expanded{
font-size: 1.25em;
background-color: white;
background: white;
color: #00838f;
font-weight: 500;
}
mat-accordion
mat-expansion-panel
mat-expansion-panel-header {
font-size: 1.25em;
background-color: white;
background: white;
color: #00838f;
font-weight: 500;
}
mat-accordion
mat-expansion-panel
.mat-expansion-panel-body {
background-color: white;
padding-top: 5px;
}
.mat-expansion-indicator::after {
color: #00838f;
}

<mat-accordion multi="true">
<mat-expansion-panel [expanded]="selectedBenefitCategories.indexOf(cat)!=-1" [hidden]="selectedBenefitCategories.indexOf(cat)===-1">
<mat-expansion-panel-header>
<i class="search-category-icon far fa-star"></i> {{cat}}
</mat-expansion-panel-header>
<ng-template matExpansionPanelContent>
some content
</ng-template>
</mat-expansion-panel>
</mat-accordion>
&#13;
答案 0 :(得分:9)
Angular Material会根据expanding
状态添加动态类。
mat-expanded
将是您正在寻找的那个。问题是这个类也附加到面板内容。为了解决这个问题,您只需将其与.mat-expansion-panel-header
类选择器结合使用即可。
总结一下,这将是这样的:
.mat-expansion-panel-header.mat-expanded {
background: red;
}
注意:Angular Material也会在悬停状态下添加
background: inherit
。
如果这不是你想要的行为,只需像这样覆盖它:
.mat-expansion-panel-header.mat-expanded,
.mat-expansion-panel-header.mat-expanded:hover {
background: red;
}
答案 1 :(得分:0)
您必须提供一个CSS选择器,该选择器比角度材质提供的默认选择器强。这意味着包括角度加background-color: inherit
的所有状态:
.mat-expansion-panel-header.mat-expanded,
.mat-expansion-panel-header.mat-expanded:hover,
.mat-expansion-panel-header.mat-expanded:focus {
background-color: red;
}
答案 2 :(得分:0)
将encapsulation: ViewEncapsulation.None
添加到@Component
@Component({
selector: '...',
templateUrl: '...',
encapsulation: ViewEncapsulation.None
})
那么任何CSS都可以正常工作
.mat-expansion-panel-header.mat-expanded,
.mat-expansion-panel-header.mat-expanded:hover,
.mat-expansion-panel-header.mat-expanded:focus {
background-color: red;
}