Posted in javascript
8:49 am, January 21, 2021

darkmode toggle switch with local storage to remember the last selection

Here is a darkmode toggle switch, that swaps out the body class so you can target dark-mode or light-mode on all your elements!

It saves to local storage the last selection so if you come back to the site later it will remember your previous selection. 

I modified this from another version of the code i found, but not sure where i originally found it, so if its yours let me know and ill link you as the source!

the demo button below does not work exactly as it has the same id as the one at the top of the site, but it still runs the dark mode and light mode function. 

HTML

<a href="javascript:void()" class="btn btn-outline-info btn-lg ml-auto font-weight-bold" id="theme-toggler" onclick="toggleTheme()">🌙 Dark</a>

Javascript

// you can use app's unique identifier here
const LOCAL_STORAGE_KEY = "custom-grid-theme";

const LOCAL_META_DATA = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY));

// you can change this url as needed
const DARK_THEME_PATH = "https://bootswatch.com/4/cyborg/bootstrap.min.css";
/* const DARK_THEME_PATH = "https://kruxor.com/css/bootstrap.slate.min.css"; */

const DARK_STYLE_LINK = document.getElementById("dark-theme-style");
const THEME_TOGGLER = document.getElementById("theme-toggler");

let isDark = LOCAL_META_DATA && LOCAL_META_DATA.isDark;

// check if user has already selected dark theme earlier
if (isDark) {
	enableDarkTheme();
} else {
	disableDarkTheme();
}


/**
 * Apart from toggling themes, this will also store user's theme preference in local storage.
 * So when user visits next time, we can load the same theme.
 *
 */
function toggleTheme() {
	isDark = !isDark;
	if (isDark) {
		enableDarkTheme();
	} else {
		disableDarkTheme();
	}
	const META = { isDark };
	localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(META));
}

function enableDarkTheme() {
	var body = document.querySelector('body');
	body.classList.add('dark-mode');
	body.classList.remove('light-mode');
	THEME_TOGGLER.innerHTML = "🌙 Dark";
}

function disableDarkTheme() {
	var body = document.querySelector('body');
	body.classList.add('light-mode');
	body.classList.remove('dark-mode');
	THEME_TOGGLER.innerHTML = "🌞 Light";
}

No Items Found.

Add Comment
Type in a Nick Name here
 
Other Items in javascript
ajax callback to delete with sweet alert confirmation to make it cool! 😎 prevent default click event on link show the browsers name in javascript json test objects (or arrays) loop through a complex object json javascript load json with vanilla javascript no jquery set active class based on url value check if a variable is undefined or NULL fancybox image popout easy check box highlight text area css validate an email address from a form field - version 2 check if a checkbox is checked with javascript form submit override with javascript submit a form with javascript onclick dropdown change input box on select Slick Slider Carousel with Fade Transition clear a input field when it looses focus using onblur javascript page redirect page scroll indicator research replacement slider for ken wheeler's slick carousel tiny slider 2 [testing] change a select box back to its initial select value select onchange add years as options to select dropdown using moment.js to make your time format nicer loop through object json javascript set the html of an element javascript get the value of an input form element (input value) minutes to decimal calculator javascript version check if a certain query string is set then apply it to all url's on the page check if a query string item is set in the current url append a query string to all url's on a page slick carousel jump to a slide on element hover Adding HTML Templates into TinyMCE Editor How to set a cookie and expire it in 30 days enable dark mode in tinymce codemirror htmlmixed textarea darkmode toggle switch with local storage to remember the last selection checking the current url and then marking a link active based on that url set maxHeight of element by id with javascript How to add jquery to squarespace site Modern HTML5 Techniques for changing classes vimeo thumbnail generator play a sound every # of seconds Monitoring Visible Objects on Screen check that a number is in the correct range based on a form selection how to install js socials for social media share buttons and make them rounded using javascript to open a link in the same window and in a new window or tab Leaflet Quick Start Example country select javascript check which option is selected and show a hidden element country select javascript check which option is selected
Page Views

This page has been viewed 1726 times.

Search Code
Search Code by entering your search text above.
Welcome

This is my test area for webdev. I keep a collection of code snippits here, mostly for my reference. Also if i find a good site, i usually add it here.

❤👩‍💻🕹

Random Quote
There is a qualitative and quantitative difference between a day that begins with a little exercise, a book, meditation, a good meal, a thoughtful walk, and the start of a day that begins with a smartphone in bed.
Unknown