当使用 Angular Material Theme API 直接将自定义密度(通过自定义 CSS 类)应用到 Angular Material 按钮(例如 mat-flat-button、mat-lines-button)时,高度会按预期进行调整。但是,当自定义密度上下文(与 mat-lines-button 等相同的 CSS 类)直接应用于
确定维度的类正在寻找
high-density-class
的子元素:
.high-density-class[_ngcontent-ng-c828002457] .mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-ng-c828002457] {
--mdc-icon-button-state-layer-size: 28px;
width: var(--mdc-icon-button-state-layer-size);
height: var(--mdc-icon-button-state-layer-size);
padding: 2px;
}
如您所见,在
.high-density-class
内部它会查找 .mat-mdc-icon-button.mat-mdc-button-base
,因为两者都位于根级别,因此不会应用样式。
然而,如果我们在父级有该类,则会找到子级并应用该类。
针对此问题的 CSS 修复方法是简单地遵循父类方法,另一个修复方法可能是将
mat.icon-button-density(-5)
的范围限制在组件的范围内。
// Apply density using the new API
.high-density-class {
@include mat.button-density(-5);
}
:host {
@include mat.icon-button-density(-5);
}
如果您只想将其应用于特定区域,您还可以添加类并将此样式范围限制到特定部分。