Лучшим источником angular информации о материалах, которую я нашел, является сам файл темы node_modules\@angular\material\_theming.scss
. Конечно, предполагается, что вы уже посмотрели руководство Theming и руководство Theming Component Theming , если нет, добро пожаловать.
Давайте посмотрим на настройку темы приложения:
// src/theme.scss
@import '~@angular/material/theming';
$typography: mat-typography-config();
@include mat-core($typography);
$background: (
status-bar: map_get($mat-grey, 300),
app-bar: map_get($mat-grey, 100),
background: #f4f4f4,
hover: rgba(black, 0.04),
card: white,
dialog: white,
disabled-button: rgba(black, 0.12),
raised-button: white,
focused-button: $dark-focused,
selected-button: map_get($mat-grey, 300),
selected-disabled-button: map_get($mat-grey, 400),
disabled-button-toggle: map_get($mat-grey, 200),
unselected-chip: map_get($mat-grey, 300),
disabled-list-option: map_get($mat-grey, 200)
);
$foreground: (
base: black,
divider: $dark-dividers,
dividers: $dark-dividers,
disabled: $dark-disabled-text,
disabled-button: rgba(black, 0.26),
disabled-text: $dark-disabled-text,
hint-text: $dark-disabled-text,
secondary-text: $dark-secondary-text,
icon: #848484,
icons: #848484,
text: #212121,
slider-min: rgba(black, 0.87),
slider-off: rgba(black, 0.26),
slider-off-active: rgba(black, 0.38)
);
$theme: (
primary: mat-palette($mat-blue, 600),
accent: mat-palette($mat-teal),
warn: mat-palette($mat-red),
is-dark: false,
foreground: $foreground,
background: $background,
details: $background
);
// You can use a single theme configuration for all material components
// @include angular-material-theme($theme);
// @include angular-material-typography($typography);
// Or setup them separately, in this case don't forget to
// include themes for all components which your app uses
@include mat-core-theme($theme);
@include mat-toolbar-theme($theme);
@include mat-toolbar-typography($theme);
Как видите, $theme
и $typography
- это просто объекты, в которых хранятся цвета и другие свойства темы. В _theme.scss
имеется несколько предварительно настроенных настроек, например, $mat-dark-theme-foreground
объект или mat-light-theme()
функция.
В нижней части src/theme.scss
file mat-toolbar
настраиваются тема и типографика. Вы можете использовать одну тему для всех компонентов или разные, если это необходимо. Не забудьте включить темы для всех компонентов, которые вы используете.
Что касается других свойств, таких как, например, border-width
, так как я знаю, что нет встроенного способа их настройки, кроме переопределения стиля. Например, если вы хотите увеличить ширину границы флажка:
.mat-checkbox-frame {
border-width: 3px !important;
}
Этот файл src/theme.scss
должен быть импортирован в ваш файл styles.scss
, или вы можете добавить его в раздел styles
вашего angular.json
.
// src/styles.scss
@import 'theme.scss';
...