Angular Material 18全局设置MyriadPro字体(mat-tab未生效)求助
Angular Material 18全局设置MyriadPro字体(mat-tab未生效)求助
大家好,我最近正在把项目从Angular Material 12升级到18,同时也在重构项目的CSS样式。目前项目里的核心依赖版本是:
"@angular/core": "^18.2.13", "@angular/material": "^18.2.13"
我想要把Angular Material的默认字体全部替换成MyriadPro,在styles.scss里写了对应的配置代码,现在发现输入框(mat-form-field包裹的input)已经能正确应用MyriadPro字体了,但mat-tab的字体还是默认的Roboto,怎么都不生效。想请教下有没有办法全局统一设置,不用给每个Material组件单独写字体样式?
我当前的styles.scss代码:
@use '@angular/material' as mat; $my-theme: mat.define-theme( $config: ( typography: ( plain-family: '"MyriadPro", "Montserrat", sans-serif', brand-family: '"MyriadPro", "Montserrat", sans-serif', ), ), ); :root { @include mat.all-component-typographies($my-theme); } /* ------------------------------ Import Fonts ------------------------------ */ @font-face { font-family: MyriadPro; src: url("assets/css/fonts/MyriadFont/MyriadPro-Regular.otf"); src: url("assets/css/fonts/MyriadFont/MyriadProRegular.eot") format("embedded-opentype"), url(assets/css/fonts/MyriadFont/MyriadProRegular.woff2) format("woff2"), url(assets/css/fonts/MyriadFont/MyriadProRegular.woff) format("woff"), url(assets/css/fonts/MyriadFont/MyriadProRegular.ttf) format("truetype"), url(assets/css/fonts/MyriadFont/MyriadProRegular.svg#MyriadProRegular) format("svg") } @font-face { font-family: Montserrat; src: url("assets/css/fonts/MonsterRat/Montserrat-Medium_1.ttf") } /* ---------------------------- Import Fonts end ---------------------------- */ body { height: 100%; font-size: 14px; margin: 0; font-family: "MyriadPro", "Montserrat", sans-serif; }
问题细节:
- 对于
mat-form-field里的输入框,我检查元素的computed样式时,能看到font-family: MyriadPro, Montserrat, sans-serif,对应的CSS变量--mdc-filled-text-field-label-text-font也正确指向了我们设置的字体族,这部分是正常的。 - 但对于
mat-tab,检查元素时computed样式显示的是font-family: Roboto, sans-serif,对应的CSS变量--mat-tab-header-label-text-font还是默认的Roboto,完全没用到我们设置的主题配置。
我试过用模板自定义mat-tab-label(比如套一层span单独设字体),但这样太繁琐了,而且希望所有Material组件(包括按钮、卡片、对话框这些)都能统一用MyriadPro,有没有一劳永逸的全局配置方式?
内容来源于stack exchange
相关产品推荐
相关产品推荐

