Posted in
150
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.
darkmode toggle switch with local storage to remember the last selection Demo
View Demo Full Screen View Demo New Tab
darkmode toggle switch with local storage to remember the last selection Code
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";
}
Add Comment
Other Items in 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
video not auto playing issue in chrome and brave
change the box-shadow of an element with javascript boxShadow
change the background color of an element with javascript
adding a new line in javascript
javascript update item in object
change the border radius of an element with javascript only
change padding of element with javascript
get the value from a range input field with javascript
twitter json feed testing
center mode slick zoom testing
gallery carousel center mode
old browser check with javascript
check browser version and show a message
using clamp js to clamp lines of text
add a gtag.js pdf click event
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)
Related Search Terms
Other Categories in Code
php functions
php functions
php functions