Material2:如何覆盖Material2组件中的Roboto字体

时间:2017-02-09 09:44:35

标签: angular angular-cli angular-material2

我想用Lato代替。我尝试在index.htmlstyles.css中添加它但不起作用。

5 个答案:

答案 0 :(得分:5)

我发现的最佳方法是将所有Angular Material 2选择器定位如下:

body [class^='mat-'], body [class*=' mat-'] {
    font-family: "lato";
} 

这是因为有角度的2个组件都有一个以' mat开头的类 - '。

答案 1 :(得分:2)

以@Ben Taliadoros'为基础。回答,这将使材料图标不会破坏:

body [class^='mat-'], body [class*=' mat-'] {
    font-family: 'PT Sans', sans-serif;
} 

body .material-icons {
    font-family: 'Material Icons';
}

CSS语法信息:

  • [attribute ^ = value] 选择属性以值
  • 开头的每个元素
  • [attribute * = value] 选择其属性包含值
  • 的每个元素

来源:https://www.w3schools.com/cssref/css_selectors.asp

答案 2 :(得分:1)

我有同样的问题@kyw。目前唯一的方法是在需要的地方覆盖每个组件中的字体。

添加后,在组件中替换了一些字体:

html * {
  font-family: "lato", sans-serif;
  font-style: normal;
  font-weight: 400;
}

希望有人能给我们更好的暗示。

答案 3 :(得分:1)

创建您自己的scss文件并像这样定义font-family

@import '~@angular/material/theming';
$custom-typography: mat-typography-config(
    $font-family: 'Lato'
);

@include mat-core($custom-typography);

签出了Typography Customization

答案 4 :(得分:0)

这有效并且不会破坏mat-icon字体。

// Override Material Design Roboto Font
body [class^='mat-']:not(mat-icon), body [class*='mat-']:not(mat-icon)  {
  font-family: "Open Sans", sans-serif;
} 

很少有人会阅读评论,因此提交此答案。