经过一些研究,我得出了这个结论,对我很有帮助,希望能对你也有所帮助。
步骤1:从品牌颜色创建自己的调色板。
发现了这个很棒的网站,你输入你的品牌颜色,它会创建一个完整的调色板,其中包含该品牌颜色的不同色调:http://mcg.mbitson.com
我使用了这个工具来处理我的primary
颜色(即我的品牌颜色)和accent
颜色。
步骤2:在你的自定义主题文件中创建调色板
这里有一个指南,教你如何创建这样的.scss
文件:https://github.com/angular/material2/blob/master/guides/theming.md
@import '~@angular/material/theming';
@include mat-core();
$bv-brand: (
50: #ffffff,
100: #dde6f3,
200: #b4c9e4,
300: #7fa3d1,
400: #6992c9,
500: #5282c1,
600: #4072b4,
700: #38649d,
800: #305687,
900: #284770,
A100: #ffffff,
A200: #dde6f3,
A400: #6992c9,
A700: #38649d,
contrast: (
50: $black-87-opacity,
100: $black-87-opacity,
200: $black-87-opacity,
300: $black-87-opacity,
400: $black-87-opacity,
500: white,
600: white,
700: white,
800: white,
900: white,
A100: $black-87-opacity,
A200: $black-87-opacity,
A400: $black-87-opacity,
A700: white,
)
);
$bv-orange: (
50: #ffffff,
100: #fff7f4,
200: #fecdbd,
300: #fc9977,
400: #fc8259,
500: #fb6c3b,
600: #fa551d,
700: #f44205,
800: #d63a04,
900: #b83204,
A100: #ffffff,
A200: #fff7f4,
A400: #fc8259,
A700: #f44205,
contrast: (
50: $black-87-opacity,
100: $black-87-opacity,
200: $black-87-opacity,
300: $black-87-opacity,
400: $black-87-opacity,
500: white,
600: white,
700: white,
800: white,
900: white,
A100: $black-87-opacity,
A200: $black-87-opacity,
A400: $black-87-opacity,
A700: white,
)
);
$bv-palette-primary: mat-palette($bv-brand);
$bv-palette-accent: mat-palette($bv-orange);
$bv-theme: mat-light-theme($bv-palette-primary, $bv-palette-accent);
@include angular-material-theme($bv-theme);
关于上面代码的一些解释
左侧的数字设置了亮度的“级别”。默认值为500(这是我的品牌颜色/强调颜色的真实阴影)。因此,在此示例中,我的品牌颜色是#5282c1
。其余的是该颜色的其他色调(其中较低的数字表示较亮的色调,较高的数字表示较暗的色调)。AXXX
是不同的颜色。还不确定(至今)它们在哪里使用。同样,较低的数字表示较亮,而较高的数字表示较暗。
对比度
设置字体颜色在这些背景颜色之上。很难(甚至不可能)通过CSS计算字体应该明亮(白色)还是深色(0.87不透明度的黑色),以便即使对于色盲人也容易阅读。因此,这是手动设置并硬编码到调色板定义中的。您也可以从我上面链接的调色板生成器中获得这个值(虽然它以旧版Material1格式输出,您将需要手动将其转换为我在此处发布的Material2格式)。
将主题设置为使用品牌颜色调色板作为primary
颜色,将强调与您的accent
颜色一起使用。
步骤3:在您可以的任何地方使用该主题
某些元素可以使用主题颜色,例如<md-toolbar>
、<md-input>
、<md-button>
、<md-select>
等。它们默认使用primary
,因此请确保将品牌颜色调色板设置为主要颜色。如果要更改颜色,请使用color
指令(这是Angular指令吗?)。
例如:
<button mat-raised-button color="accent" type="submit">登录</button>