Posted in javascript
10816
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";
}

View Statistics
This Week
372
This Month
1686
This Year
3449

No Items Found.

Add Comment
Type in a Nick Name here
 
Other Items in javascript
get current year in javascript find a text string and replace it in javascript check if an item id exists in javascript Twitter Post Fetcher v18.0.4 - javascript twitter feed fetcher Are you sure you want to navigate away from this page? #JavaScript warning floating message box on bottom right of screen with close button share to twitter javascript button function open a new window share to linked in current url button with javascript Get current URL and add a share to facebook share button with it encode url with javascript Twitter Post Fetcher Script Javascript Objects Notes javascript add class to element update value of element using javascript javascript attach a click event to an id not using jquery console dir usage how to write a javascript string over multiple lines best way to write html into an existing page javascript Uncaught TypeError: Cannot set properties of null (setting 'onclick') check url hash using javascript submit form with javascript Converting PHP to Javascript for State Extraction by numeric value Australian State Names get the value from a textarea element javascript get content from element convert characters to entities using javascript replace Auto Create HTML Code Snippets loop to arr.length or array length get tomorrows date with javascript get yesterdays date with javascript add new random image with button Create Strings using Template Literals Darkmode JS - Add darkmode to your site with one script Use destructuring assignment within the argument to the function half to send only max and min inside the function. Using Destructuring and the Rest Parameter to Reassign Array Elements Use destructuring assignment to swap the values of a and b Sweet Alert 2 Methods and Examples How to Assign the Value of One Variable to Another in Javascript Slick Slider Carousel with Custom Next and Prev Buttons Console Tips and Tricks javascript random string to put on url for cache javascript try catch example function load json data url or api with javascript log the console log output to a div javascript basic test array and loop how to join an array in javascript using the join method show the current date in javascript get element by id and hide it get element by id with javascript set a cookie on click and then check if the cookie is set and dont show that message again console table rather than console log for javascript objects and arrays
Related Search Terms
Search Code
Search Code by entering your search text above.
Welcome

This is my test area for webdev. I keep a collection of code here, mostly for my reference. Also if i find a good link, i usually add it here and then forget about it. more...

Subscribe to weekly updates about things i have added to the site or thought interesting during the last week.

You could also follow me on twitter or not... does anyone even use twitter anymore?

If you found something useful or like my work, you can buy me a coffee here. Mmm Coffee. ☕

❤️👩‍💻🎮

🪦 2000 - 16 Oct 2022 - Boots
Random Quote

"Olivia, my eldest daughter, caught measles when she was seven years old. As the illness took its usual course I can remember reading to her often in bed and not feeling particularly alarmed about it. Then one morning, when she was well on the road to recovery, I was sitting on her bed showing her how to fashion little animals out of coloured pipe-cleaners, and when it came to her turn to make one herself, I noticed that her fingers and her mind were not working together and she couldn’t do anything. 'Are you feeling all right?' I asked her. 'I feel all sleepy,' she said. In an hour, she was unconscious. In twelve hours she was dead. The measles had turned into a terrible thing called measles encephalitis and there was nothing the doctors could do to save her. That was...in 1962, but even now, if a child with measles happens to develop the same deadly reaction from measles as Olivia did, there would still be nothing the doctors could do to help her. On the other hand, there is today something that parents can do to make sure that this sort of tragedy does not happen to a child of theirs. They can insist that their child is immunised against measles. ...I dedicated two of my books to Olivia, the first was ‘James and the Giant Peach’. That was when she was still alive. The second was ‘The BFG’, dedicated to her memory after she had died from measles. You will see her name at the beginning of each of these books. And I know how happy she would be if only she could know that her death had helped to save a good deal of illness and death among other children."

I just checked google books for BFG, and the dedication is there. 

https://www.google.com.au/books/edition/_/quybcXrFhCIC?hl=en&gbpv=1 


Roald Dahl, 1986
Random CSS Property

font-variant-alternates

The font-variant-alternates CSS property controls the usage of alternate glyphs. These alternate glyphs may be referenced by alternative names defined in @font-feature-values.
character-variant() css reference