Framework v4 BETA

CSS Variables

Ionic components are built with CSS Variables for easy customization of an application. CSS variables allow a value to be stored in one place, then referenced in multiple other places. They also make it possible to change CSS dynamically at runtime (which previously required a CSS preprocessor). CSS variables make it easier than ever to override Ionic components to match a brand or theme.

Setting Values

Global Variables

CSS variables can be set globally in an application in the :root selector. They can also be applied only for a specific mode. See Ionic Variables for more information on the global variables Ionic provides.

css
/* Set variables for all modes */
:root {
  /* Set the background of the entire app */
  --ion-background-color: #ff3700;

  /* Set the font family of the entire app */
  --ion-font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Roboto", sans-serif;
}

/* Set text color of the entire app for iOS only */
.ios {
  --ion-text-color: #000;
}

/* Set text color of the entire app for Material Design only */
.md {
  --ion-text-color: #222;
}

Component Variables

To set a CSS variable for a specific component, add the variable inside of its selector. See Ionic Variables for more information on the component-level variables Ionic provides.

css
/* Set the color on all ion-button elements */
ion-button {
  --color: #222;
}

/* Set the background on an ion-button with the .fancy-button class */
.fancy-button {
  --background: #00ff00;
}

Variables set via JavaScript

CSS variables can also be changed via JavaScript using setProperty():

js
const el = document.querySelector('.fancy-button');
el.style.setProperty('--background', '#36454f');

Getting Values

Using CSS

The var() CSS function can be used to get the value of a CSS variable, along with any number of fallback values, if desired. In the below example, the --background property will be set to the value of the --charcoal variable, if defined, and if not it will use #36454f.

css
.fancy-button {
  --background: var(--charcoal, #36454f);
}

Using JavaScript

The value of a CSS variable can be read in JavaScript using getPropertyValue():

js
const el = document.querySelector('.fancy-button');
const color = el.style.getPropertyValue('--charcoal');

Ionic Variables

Component Variables

Ionic provides variables that exist at the component level, such as --background and --color. For a list of the custom properties a component accepts, view the Custom Properties section of its API reference. For example, see the Button Custom Properties.

Global Variables

There are several global variables that Ionic provides in order to make theming an entire application easier. For more information, including a list of all of the global variables, see Advanced Theming.