垫子图标按钮需要包裹以应用密度

问题描述 投票:0回答:1

当使用 Angular Material Theme API 直接将自定义密度(通过自定义 CSS 类)应用到 Angular Material 按钮(例如 mat-flat-button、mat-lines-button)时,高度会按预期进行调整。但是,当自定义密度上下文(与 mat-lines-button 等相同的 CSS 类)直接应用于

angular angular-material angular-material2 material3
1个回答
0
投票

确定维度的类正在寻找

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);
}

如果您只想将其应用于特定区域,您还可以添加类并将此样式范围限制到特定部分。

Stackblitz 演示

© www.soinside.com 2019 - 2024. All rights reserved.