Dark Mode Toggle With jQuery And Local Storage

Dark Mode Toggle With jQuery And Local Storage
File Size: 10 KB
Views Total: 1257
Last Update:
Publish Date:
Official Website: Go to website
License: MIT

Yet another dark mode toggle that enables the visitor to toggle between Dark Mode and Light Mode with a smooth color transition effect.

It uses jQuery to toggle between CSS classes and utilizes local storage API to persistent the dark mode across pages and refreshes.

See Also:

How to use it:

1. Apply dark mode styles to your webpage as follows:

body {
  color: #222;
  -webkit-transition: background-color 800ms ease;
  transition: background-color 800ms ease;

body.dark {
  background-color: #222;
  color: #fff;

body.dark img {
  -webkit-filter: brightness(70%);
  filter: brightness(70%);

/* more dark mode styles here */

2. Create Dark/Light Mode toggle buttons on the page.

<button class="dark-button">Dark</button>
<button class="light-button" hidden="hidden">Light</button>

3. Load the necessary jQuery library at the end of the document.

<script src="/path/to/cdn/jquery.slim.min.js"></script>

4. The main JavaScript to setup the dark mode.

var darkMode;

if (localStorage.getItem('dark-mode')) {  
  // if dark mode is in storage, set variable with that value
  darkMode = localStorage.getItem('dark-mode');  
} else {  
  // if dark mode is not in storage, set variable to 'light'
  darkMode = 'light';  

// set new localStorage value
localStorage.setItem('dark-mode', darkMode);

if (localStorage.getItem('dark-mode') == 'dark') {
  // if the above is 'dark' then apply .dark to the body
  // hide the 'dark' button
  // show the 'light' button

5. Enable the Dark/Light Mode toggle buttons

$('.dark-button').on('click', function() {  
  // set stored value to 'dark'
  localStorage.setItem('dark-mode', 'dark');

$('.light-button').on('click', function() {  
  // set stored value to 'light'
  localStorage.setItem('dark-mode', 'light');   

This awesome jQuery plugin is developed by Brian Haferkamp. For more Advanced Usages, please check the demo page or visit the official website.