Angular Material2 theming - how to set app background? Angular Material2 theming - how to set app background? angular angular

Angular Material2 theming - how to set app background?


If you want to change the theme's background color for the entire app in a clean way, you can override your theme with the following.

// Set custom background color$custom-background-color: map_get($mat-blue-grey, 50);// -or- Can set colour by hex value too$custom-background-color: #628cc9;$background: map-get($theme, background);$background: map_merge($background, (background: $custom-background-color));$theme: map_merge($theme, (background: $background));

This assumes you have already set up your $theme using mat-light-theme or mat-dark-theme. Of course you can substitute $mat-blue-grey for a color map of your choosing.

Here is a full example of how I am using this. I have the following in a file called theme.scss, which is included in my angular.json "styles" entry:

// Include the common styles for Angular Material. We include this here so that you only// have to load a single css file for Angular Material in your app.// Be sure that you only ever include this mixin once!@include mat-core;// Define the palettes for your theme using the Material Design palettes available in palette.scss// (imported above). For each palette, you can optionally specify a default, lighter, and darker// hue.$primary: mat-palette($mat-red, 600, 400, 900);$accent: mat-palette($mat-blue-grey, 500, 200, 700);$background-color: map_get($mat-blue-grey, 50);// The warn palette is optional (defaults to red).$warn: mat-palette($mat-blue);// Create the theme object (a Sass map containing all of the palettes).$theme: mat-light-theme($primary, $accent, $warn);// Insert custom background color$background: map-get($theme, background);$background: map_merge($background, (background: $background-color));$theme: map_merge($theme, (background: $background));// Include theme styles for core and each component used in your app.// Alternatively, you can import and @include the theme mixins for each component// that you are using.@include angular-material-theme($theme);@include my-app-theme($theme);


Not exactly answer to your question, but I guess many people will end up here searching for "how to set app background color".

In your project/index.html set your body class to mat-app-background

<body class="mat-app-background">  <app-root></app-root></body>

And make sure in your project/angular.json you have:

        "styles": [          "./node_modules/@angular/material/prebuilt-themes/YOUR_STYLE.css",          ...        ],


edit: This strategy involves replacing Material functionality. for most cases, I would recommend Jake Stoeffler's answer above.

If you want to set the background colors, you likely want to customize the entire background and foreground palette by emulating the mat-light-theme or mat-dark-theme functions with your own replacement. Your replacement would include your own palettes instead of the mat-light-theme-foreground and background palettes.

example: https://stackblitz.com/edit/angular-material-custom-background?file=theme.scss

I don't know if this method is recommended or officially supported.