"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > How can I create a customizable dark mode for my website using CSS Variables and JavaScript?

How can I create a customizable dark mode for my website using CSS Variables and JavaScript?

Published on 2024-11-07
Browse:444

How can I create a customizable dark mode for my website using CSS Variables and JavaScript?

Customizing Dark Mode with CSS Variables and JavaScript

Implementing a dark mode for your app or website is crucial in providing a seamless user experience. Native CSS media rules offer an option for browsers to detect system-set dark modes, but users may prefer a different theme for specific sites or browsers that don't support it yet, such as Microsoft Edge.

To address this, we can utilize CSS variables and JavaScript to manage theme settings.

CSS Customization with Variables and Themes

Define CSS variables at the root or default level, and specify a dark theme:

:root {
    --font-color: #000;
    ...
    --bg-color: rgb(243,243,243);
}

[data-theme="dark"] {
    --font-color: #c1bfbd;
    ...
    --bg-color: #333;
}

Call the variables where needed to adjust styles dynamically.

JavaScript for Theme Detection and Toggling

In the header section of your HTML, add JavaScript to detect the user's preferred theme:

function detectColorScheme() {
    var theme = "light";
    ...
}
detectColorScheme();

Use JavaScript to toggle between light and dark themes:

const toggleSwitch = document.querySelector('#theme-switch input[type="checkbox"]');

function switchTheme(e) {
    ...
}

toggleSwitch.addEventListener('change', switchTheme, false);

HTML for Theme Toggling

Create an HTML checkbox for user-controlled theme switching:

With this approach, you can automatically detect the user's theme, allow them to override it, and provide a customized experience across browsers and platforms.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3