Dark Mode & Themes | asadmukhtar.info
Step-by-Step Guide to Setting Up Authentication in Laravel 12 with Breeze   |   Manual Authentication in Laravel 12: Step-by-Step Guide   |   How to Build a REST API in Laravel 12 with Sanctum   |   Laravel 12 CRUD Application with Image Upload   |   Laravel 12 Multi-Auth System: Admin & User Login   |   How to Integrate Stripe Payment Gateway in Laravel 12   |   Building a Role-Based Access Control (RBAC) in Laravel 12   |   How to Use Laravel 12 Queues and Jobs for Background Tasks   |   Laravel 12 Livewire CRUD Example with Validation   |   Email Verification and Password Reset in Laravel 12   |   How to Use Laravel 12 API with Vue.js 3   |   Laravel 12 AJAX CRUD with jQuery and Bootstrap   |   Laravel 12 Multi-Language Website Setup   |   React Best Practices for 2025: Performance, SEO, and Scalability   |   How to Build a Full-Stack MERN App: A Step-by-Step Guide   |   React State Management: Redux vs. Context API vs. Recoil   |   Server-Side Rendering (SSR) in React with Next.js for SEO   |   How to Optimize React Apps for Faster Load Times   |   Building a REST API with Node.js and Express for a React App   |   Integrating JWT Authentication in React and Node.js (MERN Stack)   |   Real-time Chat App with React, Node.js, and Socket.io   |   How to Deploy a MERN Stack Application on AWS or Vercel   |   Connecting React Frontend to a Node.js Backend with Axios   |   Laravel Implement Flash Messages Example   |   How to integrate Angular 19 with Node.js and Express for full-stack development   |   Best practices for connecting Angular 19 frontend with Laravel API   |   Step-by-step guide to upgrading an existing project to Angular 19   |   How to implement authentication in Angular 19 using JWT and Firebase   |   Optimizing server-side rendering in Angular 19 with route-level render modes   |   Using Angular 19 signals for state management in large applications   |   How to create standalone components in Angular 19 for modular architecture   |   Building a CRUD application in Angular 19 with MongoDB and Express   |   Implementing lazy loading in Angular 19 to improve performance   |   How to integrate Angular 19 with GraphQL for efficient data fetching   |   Vue 3 Composition API vs Options API: A Comprehensive Comparison   |   Fetching and Displaying Data from APIs in Vue.js with Axios   |   Building a Todo App in Vue.js with Local Storage Integration   |   Handling Forms and Validation in Vue.js Using VeeValidate   |   State Management in Vue.js Applications Using Vuex   |   10 Most Important Tasks Every MERN Stack Developer Should Master   |   How to Build a Full-Stack CRUD App with MERN Stack   |   Best Practices for Authentication & Authorization in MERN Stack   |   1. MEAN Stack vs. MERN Stack: Which One Should You Choose in 2025   |   Top 10 Node.js Best Practices for Scalable and Secure Applications   |   How to Build a REST API with Laravel and Node.js (Step-by-Step Guide)   |   Mastering Angular and Express.js for Full-Stack Web Development   |   Top 10 Daily Tasks Every Frontend Developer Should Practice   |   Essential Backend Development Tasks to Boost Your Coding Skills   |   Real-World Mini Projects for Practicing React.js Daily   |   Laravel Developer Task List: Beginner to Advanced Challenges   |   How to Assign Effective Tasks to Your Intern Developers   |   10 Must-Try Tasks to Master JavaScript Fundamentals   |   Practical CSS Challenges That Improve Your UI Design Skills   |   Top Tasks to Learn API Integration in React and Angular   |   Best Task Ideas for a 30-Day Web Development Challenge   |   Top Git and GitHub Tasks Every Developer Should Know   |   30-Day Task Plan for Web Development Interns   |   Weekly Task Schedule for Junior Developers in a Startup   |   How to Track Progress with Development Tasks for Interns   |   What Tasks Should You Give to Interns in a MERN Stack Project   |   Build These 5 Projects to Master React Routing   |   Task-Based Learning: Become a Full-Stack Developer in 90 Days   |   Daily Coding Tasks That Will Sharpen Your Logical Thinking   |   Top 7 Backend Task Ideas to Practice With Node.js and MongoDB   |  

1. What is Dark Mode in Bootstrap?

Dark mode is a color scheme that uses dark backgrounds with light text, reducing eye strain and improving readability in low-light environments.

βœ… Bootstrap 5 supports dark mode utilities for components, backgrounds, and text.

2. Adding Dark Mode to Your Bootstrap Project

πŸ‘‰ Step 1: Include Bootstrap CSS

Ensure you have Bootstrap included in your project.

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">

πŸ‘‰ Step 2: Use Bootstrap’s Dark Theme Classes

Bootstrap provides .bg-dark and .text-light classes to enable dark mode for components.

Example: Basic Dark Mode Page

<body class="bg-dark text-light">
  <div class="container">
    <h1>Welcome to Dark Mode</h1>
    <p>This is a dark-themed Bootstrap page.</p>
  </div>
</body>

βœ… Explanation:

  • bg-dark → Sets dark background.

  • text-light → Changes text color to white.

3. Using Bootstrap’s Dark-Themed Components

Bootstrap provides pre-styled dark versions of many UI elements.

Example: Dark Themed Navbar

<nav class="navbar navbar-dark bg-dark">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Dark Navbar</a>
  </div>
</nav>

βœ… Explanation:

  • navbar-dark → Applies light text on dark background.

  • bg-dark → Makes navbar background dark.

Example: Dark Mode Card

<div class="card bg-dark text-light">
  <div class="card-body">
    <h5 class="card-title">Dark Mode Card</h5>
    <p class="card-text">This is a Bootstrap card in dark mode.</p>
  </div>
</div>

4. Creating a Dark Mode Toggle (Switch Between Light & Dark Themes)

To allow users to toggle between Light and Dark Mode, you can use JavaScript.

Example: Dark Mode Toggle Button

<button class="btn btn-primary" id="toggleDarkMode">Toggle Dark Mode</button>

<script>
  const body = document.body;
  const toggleBtn = document.getElementById("toggleDarkMode");

  toggleBtn.addEventListener("click", () => {
    body.classList.toggle("bg-dark");
    body.classList.toggle("text-light");
  });
</script>

βœ… Explanation:

  • Clicking the button toggles dark mode on/off.

  • classList.toggle() adds or removes .bg-dark and .text-light.

5. Using Bootstrap 5 Themes for Customization

Bootstrap allows theme customization with CSS variables and utilities.

Example: Custom Theme with CSS Variables

<style>
  :root {
    --bs-body-bg: #121212;  /* Dark background */
    --bs-body-color: #ffffff;  /* White text */
    --bs-primary: #ff9800; /* Custom primary color */
  }
</style>

<body class="bg-dark text-light">
  <div class="container">
    <h1 class="text-primary">Custom Themed Dark Mode</h1>
  </div>
</body>

βœ… Explanation:

  • --bs-body-bg → Changes background color.

  • --bs-body-color → Sets text color.

  • --bs-primary → Defines a custom theme color.

6. Using Bootstrap Theme Colors for Dark Mode

Bootstrap provides predefined theme colors that can be applied dynamically.

Example: Buttons with Theme Colors

<button class="btn btn-primary">Primary</button>
<button class="btn btn-danger">Danger</button>
<button class="btn btn-success">Success</button>

βœ… Explanation:

  • Bootstrap provides colors like btn-primary, btn-danger, and btn-success.

For dark mode, you can use btn-outline-light instead:

<button class="btn btn-outline-light">Dark Mode Button</button>

7. Making Dark Mode Persistent (Remember User Preference)

To save user’s preference, use localStorage in JavaScript.

Example: Save Dark Mode Preference

<script>
  const body = document.body;
  const toggleBtn = document.getElementById("toggleDarkMode");

  // Check saved mode
  if (localStorage.getItem("darkMode") === "enabled") {
    body.classList.add("bg-dark", "text-light");
  }

  toggleBtn.addEventListener("click", () => {
    body.classList.toggle("bg-dark");
    body.classList.toggle("text-light");

    // Save mode
    if (body.classList.contains("bg-dark")) {
      localStorage.setItem("darkMode", "enabled");
    } else {
      localStorage.removeItem("darkMode");
    }
  });
</script>

βœ… Explanation:

  • Saves the user’s dark mode choice in localStorage.

  • Loads the preferred mode on page refresh.

Conclusion

Bootstrap Dark Mode & Themes offer flexibility in UI design.

  • Use .bg-dark and .text-light for dark mode.

  • Apply dark-themed components like navbar and cards.

  • Create a toggle button to switch between light and dark mode.

  • Customize themes using CSS variables.

  • Remember user preference with localStorage.

πŸš€ Now you can build a dark mode website using Bootstrap! 🎨