Dynamically Updating CSS Root Variables using JavaScript

CSS variables, also known as custom properties, allow for dynamic and reusable styles.

By updating CSS root variables with JavaScript, you can achieve dynamic theming, responsive design, and more.

In this article, we'll explore how to dynamically update CSS root variables.

Understanding CSS Root Variables

CSS root variables are defined in the :root selector. They start with a double hyphen (--) followed by a custom name. For example:

:root {
    --primary-color: #3498db;
    --font-size: 16px;

These variables can be used throughout your CSS stylesheets, providing a central place to define and change values.

To access a CSS root variable in your styles, you use the var() function:

body {
    background-color: var(--primary-color);
    font-size: var(--font-size);

Dynamically Updating CSS Root Variables with JavaScript

To dynamically update CSS root variables using JavaScript, you'll need to follow these steps:

1. Access the Document's Styles

First, access the style attribute of the document.documentElement to get the root style element. This is where you can read and modify the CSS root variables.

const rootStyles = document.documentElement.style;

2. Update CSS Root Variables

Now, you can use JavaScript to update the CSS root variables based on your application's requirements.

For example, you can change the primary color or font size based on user interactions, preferences, or the application's state.

rootStyles.setProperty('--primary-color', '#FF5733');
rootStyles.setProperty('--font-size', '18px');

3. Apply the Updates

After updating the CSS root variables, the changes will be reflected in the styles of your entire web page.

Elements that use var(--primary-color) or var(--font-size) will now display the new values.

Use Cases for Dynamic CSS Root Variables

Here are some common use cases where dynamically updating CSS root variables can be beneficial:

1. Theming

Allow users to change the theme of your website by switching between light and dark modes.

Update CSS root variables like --primary-background-color and --text-color to control the color scheme.

2. Responsive Design

Adjust font sizes, margins, and paddings dynamically to create a responsive layout.

Update CSS root variables based on the screen size or device orientation.

3. User Preferences

Let users customize aspects of your website, such as font size, line height, or link color, and save their preferences in cookies or local storage for a consistent experience on return visits.

4. Real-time Updates

Change styles in real-time based on events, such as highlighting selected items, indicating errors, or animating elements on user interactions.

Browser Compatibility

Dynamically updating CSS root variables is widely supported in modern web browsers. However, older browsers may not fully support this feature.

Be sure to check for compatibility and consider providing fallback styles when necessary.


Dynamically updating CSS root variables is a powerful technique that can enhance the user experience on your website.

It provides flexibility, theming options, and responsiveness, allowing your site to adapt to user preferences and different devices.

By using JavaScript to modify the CSS root variables in real-time, you can create a more dynamic and engaging web application.

Experiment with this technique to unlock new possibilities in web design and user customization.