ng add @angular/material
Also add these classes to the body: class="mat-app-background mat-typography"
Using Material styles for styling components:
@import '~@angular/material/theming'; .custom-elem { color: mat-color($mat-green, 700); }
A material palette consist of a range of colors with different contrast. They use a number system as a key for which color to use. The 500 is the default color.
Add default Material theme
angular.json:
{ // ... "projects": { "project-name": { // ... "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", "options": { // ... "styles": [ "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", "src/assets/styles/styles.scss" ],
Angular Material custom theme
assets/styles/project-name-theme.scss:
// https://material.angular.io/guide/theming @use '~@angular/material' as mat; @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. Available color palettes: https://material.io/design/color/ $project-primary: mat.define-palette(mat.$cyan-palette, 800); $project-accent: mat.define-palette(mat.$cyan-palette, 600); // The warn palette is optional (defaults to red). $project-warn: mat.define-palette(mat.$orange-palette); // Create the theme object. A theme consists of configurations for individual // theming systems such as `color` or `typography`. $project-app-theme: mat.define-light-theme( ( color: ( primary: $project-primary, accent: $project-accent, warn: $project-warn, ), ) ); $project-typography: mat.define-typography-config( $font-family: 'Cabin' ); @include mat.all-component-typographies($project-typography); // 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 mat.all-component-themes($project-app-theme);
index.html:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Project Name</title> <base href="/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family=Cabin:wght@400;500;600&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> </head> <body class="mat-app-background mat-typography"> <app-main> <h3>Loading...</h3> </app-main> </body> </html>
angular.json:
{ // ... "projects": { "project-name": { // ... "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", "options": { // ... "styles": [ "src/assets/styles/project-name-theme.scss", "src/assets/styles/styles.scss" ],
Material Elevation
https://material.angular.io/guide/elevation
@import '~@angular/material/theming'; // from node_modules/@angular/material/_theming.scss // <div class="mat-elevation-z2">Some elevated content</div> .card { @include mat-elevation(2); &:hover { @include mat-elevation(8); } }
You can add classes to add bg drop shadow: mat-elevation-z1 to mat-elevation-z24