Implementing Dark Mode in Web Applications using CSS and JavaScript

Olamiji BadmosOlamiji Badmos
2 min read

Why Dark Mode?

Dark mode isn't just a trend, it's a user experience enhancement that:

  • Reduces eye strain

  • Conserves battery life

  • Improves accessibility

  • Offers modern design aesthetic

Dark mode has become increasingly popular in web design, transforming user interfaces across digital platforms. This design approach offers users a visually comfortable alternative to traditional light interfaces, reducing eye strain and conserving device battery life, especially in low-light environments.

Setup Your Project

To implement a dark mode toggle, you'll need:

  • HTML for structure

  • CSS for styling

  • JavaScript for theme-switching

HTML Structure

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container">
        <button id="toggleButton">Toggle Dark Mode</button>
        <!-- Your content here -->
    </div>
    <script src="script.js"></script>
</body>
</html>

CSS Styling

/* Default Light Mode */
body {
    background-color: white;
    color: black;
    transition: background-color 0.3s, color 0.3s;
}

/* Dark Mode Styles */
body.dark-mode {
    background-color: #333;
    color: white;
}

.container.dark-mode {
    background-color: #444;
}

#toggleButton {
    padding: 10px;
    cursor: pointer;
}

JavaScript implementation for theme toggling

document.addEventListener('DOMContentLoaded', function() {
    const toggleButton = document.getElementById('toggleButton');

    toggleButton.addEventListener('click', function() {
        // Toggle dark mode on body and containers
        document.body.classList.toggle('dark-mode');
        document.querySelectorAll('.container').forEach(container => {
            container.classList.toggle('dark-mode');
        });

        // Update button text
        toggleButton.classList.toggle('dark-mode');
        toggleButton.textContent = 
            toggleButton.textContent === 'Toggle Dark Mode' 
            ? 'Toggle Light Mode' 
            : 'Toggle Dark Mode';
    });
});

Key Steps to Achieve Dark Mode Toggle

  • DOM Event Listener: Ensures script execution after complete DOM content loading, preventing potential script errors.

  • Toggle Button Selection: Identify and capture the button element getElementById('toggleButton') for interaction handling.

  • Dark Mode Class Manipulation:

    • Toggle dark-mode class on body and container elements

    • Dynamically switch visual styles between light and dark themes

    • Leverage CSS class for instant, clean theme transitions

  • Dynamic Button Text Update:

    • Modify button text to reflect the current theme state

    • Provide immediate user feedback on theme change

    • Switch between "Toggle Dark Mode" and "Toggle Light Mode"

  • Smooth Transition Implementation:

    • Use CSS transition property for seamless visual shifts

    • Enhance user interface responsiveness

Result

Light Mode

Light Mode

Dark Mode

Dark Mode

Conclusion

Dark mode is more than aesthetic, it's about creating inclusive, user-friendly web experiences. By implementing thoughtful theme toggles, developers can significantly enhance user interaction and satisfaction.

0
Subscribe to my newsletter

Read articles from Olamiji Badmos directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Olamiji Badmos
Olamiji Badmos

๐Ÿ‘‹ Hi, I'm a Frontend Developer and Technical Writer. ๐Ÿš€ I craft user-friendly web apps with ReactJs and VueJs. โœ๏ธ Sharing tech knowledge through writing. I'm fueled by a boundless enthusiasm for learning, empowering me to delve into any subject matter to create engaging and compelling content. My passion for exploring new realms and translating complex concepts into accessible, user-friendly content drives my writing.