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

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

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

angular angular-cli angular-material2
5个回答
5
投票

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

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

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


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]选择属性以value开头的每个元素
  • [attribute * = value]选择其属性包含值的每个元素

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


1
投票

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

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

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

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


1
投票

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

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

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

检查了Typography Customization


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

感觉很少会读评论,所以提交这个答案。

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