Angular Functions


Exploring Angular Material Themes: Customizing UI Appearance

User interface (UI) design plays a pivotal role in the success of any web application. A well-designed UI not only enhances user experience but also contributes to the overall aesthetics of your application. Angular Material, a popular UI component library for Angular, offers a powerful theming system that allows you to customize the appearance of your application to match your brand or design preferences.

Exploring Angular Material Themes: Customizing UI Appearance

In this blog post, we will delve into the world of Angular Material Themes, exploring how to create and customize themes to give your Angular applications a unique and visually appealing look. We’ll cover the basics of theming, discuss the available customization options, and provide you with code samples and step-by-step instructions to get you started on your theming journey.

1. Understanding Angular Material Themes

Angular Material Themes are a set of predefined design specifications that define the visual style of your application. Themes include settings for typography, colors, and other design elements. When you create an Angular application using Angular Material, it comes with a default theme that you can use as a starting point for customization.

1.1. Benefits of Using Angular Material Themes

Before we dive into customization, let’s explore why Angular Material Themes are a valuable asset for your Angular projects:

1.1.1. Consistency

Themes ensure that your application maintains a consistent look and feel throughout its different components and pages. This consistency is crucial for providing a seamless user experience.

1.1.2. Easy Customization

Angular Material Themes make it easy to customize your application’s appearance. You can tailor the theme to match your brand’s colors and design guidelines without writing extensive CSS.

1.1.3. Responsiveness

Themes are designed to be responsive out of the box. This means your application will adapt gracefully to different screen sizes and devices without additional effort.

1.1.4. Time Savings

By leveraging Angular Material Themes, you save valuable development time. You don’t have to reinvent the wheel when it comes to styling; instead, you can build upon the existing themes.

Now that we’ve covered why Angular Material Themes are beneficial, let’s jump into the process of creating and customizing them.

2. Creating a Custom Angular Material Theme

Creating a custom Angular Material Theme involves defining your preferred colors, typography, and other design elements. Angular Material provides a straightforward way to achieve this through a custom theme file. Follow these steps to create your custom theme:

Step 1: Install Angular Material

If you haven’t already, you need to install Angular Material in your Angular project. You can do this using Angular CLI:

ng add @angular/material

Step 2: Create a Custom Theme File

Next, create a custom theme file that will hold your theme’s configurations. You can do this by running the following command:

ng generate @angular/material:material-theme <theme-name>

Replace <theme-name> with your preferred name for the theme. This command will generate a <theme-name>.scss file in your project.

Step 3: Customize Your Theme

Open the generated <theme-name>.scss file and start customizing your theme. You can define colors, typography, and other design elements using SCSS variables. Here’s a sample snippet:

@import '~@angular/material/theming';

// Define your primary and accent colors
$primary: mat-palette($mat-indigo);
$accent: mat-palette($mat-pink, A200, A100, A400);

// Create your theme using the defined colors
$my-theme: mat-light-theme($primary, $accent);

// Include the theme in your application
@include angular-material-theme($my-theme);

In this example, we’ve defined primary and accent colors and created a theme using those colors. You can further customize typography, button styles, and more to match your design requirements.

Step 4: Import Your Custom Theme

Once you’ve defined and saved your custom theme file, you need to import it into your project’s styles. Open your styles.scss file and add the following line at the top:

@import 'path-to-your-custom-theme-file';

Replace ‘path-to-your-custom-theme-file’ with the actual path to your custom theme file.

Your custom theme is now ready to use in your Angular application.

3. Applying Custom Themes to Angular Components

With your custom theme in place, you can apply it to Angular Material components in your application. Here’s how to do it:

3.1. Applying a Theme to a Specific Component

To apply your custom theme to a specific Angular Material component, you can use the ngClass directive. For example, if you want to apply the theme to a button component, you can do the following:

<button mat-raised-button [ngClass]="'my-custom-theme'">My Themed Button</button>

In this example, we’re using the ngClass directive to add the my-custom-theme class to the button, which corresponds to the custom theme you defined.

3.2. Applying a Theme Globally

If you want to apply your custom theme globally to all Angular Material components, you can use the MatToolbar component as an example. First, add a class to the <mat-toolbar> element in your application’s HTML:

<mat-toolbar class="my-custom-theme">
  <!-- Toolbar content -->

Next, define your custom theme class in your SCSS:

.my-custom-theme {
  @include angular-material-theme($my-theme);

This will apply your custom theme to the entire toolbar and all its child components.

4. Advanced Theming: Overriding Angular Material Defaults

In some cases, you might want to override specific styles from Angular Material’s default themes. Angular Material allows you to do this easily by using the $mat global variable.

For example, if you want to change the font size of all Angular Material buttons, you can do the following:

$mat-button-typography: mat-typography-config(
  $font-family: 'Roboto, sans-serif',
  $button-font-size: 16px

$my-custom-theme: mat-light-theme($primary, $accent, $warn, $my-custom-typography);

@include angular-material-theme($my-custom-theme);

In this example, we’ve overridden the default button font size by configuring the $mat-button-typography variable.


Customizing the appearance of your Angular applications using Angular Material Themes is a powerful way to create visually appealing and consistent user interfaces. With the ability to define custom themes, apply them to specific components, and even override default styles, you have full control over the look and feel of your web applications.

Remember that good design is an ongoing process, and it’s essential to regularly review and refine your themes as your application evolves. By investing time in theming, you can create web applications that not only provide excellent functionality but also leave a lasting impression on your users with their stunning visual design.

Start exploring Angular Material Themes today, and unlock the potential to craft beautiful and unique user interfaces for your Angular projects. Happy theming!

Previously at
Flag Argentina
time icon
Experienced Engineering Manager and Senior Frontend Engineer with 9+ years of hands-on experience in leading teams and developing frontend solutions. Proficient in Angular JS