Darkmode
Eine kleine Doku
wie er auf meiner Seite
implementiert wurde
Der Code für den Darkmode
Der Toggel Switch
HTML:
<div class="toggle-switch">
<label class="switch-label">
<input type="checkbox" class="checkbox">
<span class="slider"></span>
</label>
</div>
CSS:
.toggle-switch {
position: relative;
width: 50px;
height: 25px;
--light: #d8dbe0;
--dark: #28292c;
--link: rgb(27, 129, 112);
--link-hover: rgb(24, 94, 82);
}
.switch-label {
position: absolute;
width: 100%;
height: 25px;
background-color: var(--dark);
border-radius: 25px;
cursor: pointer;
border: 2px solid var(--dark);
}
.checkbox {
position: absolute;
display: none;
}
.slider {
position: absolute;
width: 100%;
height: 100%;
border-radius: 35px;
-webkit-transition: 0.3s;
transition: 0.3s;
}
.checkbox:checked ~ .slider {
background-color: var(--light);
}
.slider::before {
content: "";
position: absolute;
width: 20px;
height: 20px;
border-radius: 50%;
-webkit-box-shadow: inset 12px -4px 0px 0px var(--light);
box-shadow: inset 9px -4px 0px 0px var(--light);
background-color: var(--dark);
-webkit-transition: 0.3s;
transition: 0.3s;
}
.checkbox:checked ~ .slider::before {
-webkit-transform: translateX(27px);
-ms-transform: translateX(27px);
transform: translateX(27px);
background-color: var(--dark);
-webkit-box-shadow: none;
box-shadow: none;
}
Das LocalStorage Banner
HTML:
<div id="local-storage-banner">
<p>
Wir verwenden LocalStorage, um Ihre Dark-Mode-Einstellungen zu speichern. Wenn Sie fortfahren, stimmen Sie der Verwendung von LocalStorage zu.
</p>
<button id="accept-storage">Akzeptieren</button>
</div>
CSS:
#local-storage-banner {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 1em;
background-color: var(--background-color-footer);
text-align: center;
z-index: 999;
}
#local-storage-banner p{
color: var(--text-color);
margin-bottom: 0.5rem;
}
#accept-storage {
background-color: var(--primary-color);
border: none;
padding: 0.5em 1em;
color: var(--text-color);
cursor: pointer;
margin-left: 1em;
}
Die Farben und die .darkmode Klasse im CSS
:root {
--background-color: #e9edf19d;
--text-color: black;
--primary-color: #0096ff;
--accent-color-hover: #72ffff;
--text-color-footer: #1d1b1b;
--background-color-footer: #9898a3;
}
.dark-mode {
--background-color: #2c2929;
--text-color: #ffffff;
--primary-color: #0e9afd;
--accent-color-hover: #72ffff;
--text-color-footer: #fff;
--background-color-footer: #1c1c1c;
}
.dark-mode .hero {
filter: brightness(80%);
}
.dark-mode .skill {
filter: brightness(80%);
}
.dark-mode .post {
filter: brightness(80%);
}
.dark-mode .tool {
filter: brightness(80%);
}
.dark-mode .guide {
filter: brightness(80%);
}
.dark-mode .hero{
background-image: url(/Bilder/half-moon.jpg);
}
h1,h2,h3,h4,h5,h6{
color: var(--primary-color);
}
p,li{
color: var(--text-color);
}
Der JavaScript Code
//--Darkmode--//
document.addEventListener('DOMContentLoaded', function() {
const toggleSwitch = document.querySelector('.toggle-switch input[type="checkbox"]');
const body = document.querySelector('body');
const acceptStorage = document.querySelector('#accept-storage');
const localStorageBanner = document.querySelector('#local-storage-banner');
function switchTheme(e) {
if (e.target.checked) {
body.classList.add('dark-mode');
localStorage.setItem('dark-mode', 'true');
} else {
body.classList.remove('dark-mode');
localStorage.setItem('dark-mode', 'false');
}
}
function closeBanner() {
localStorageBanner.style.display = 'none';
localStorage.setItem('banner-accepted', 'true');
}
// Load dark mode preference from local storage
const darkModePreference = localStorage.getItem('dark-mode');
if (darkModePreference === 'true') {
toggleSwitch.checked = true;
body.classList.add('dark-mode');
} else {
toggleSwitch.checked = false;
body.classList.remove('dark-mode');
}
// Hide banner if the user has accepted it before
const bannerAccepted = localStorage.getItem('banner-accepted');
if (bannerAccepted === 'true') {
localStorageBanner.style.display = 'none';
}
toggleSwitch.addEventListener('change', switchTheme, false);
acceptStorage.addEventListener('click', closeBanner, false);
});
Der bereitgestellte Code enthält HTML, CSS und JavaScript für einen Toggel Switch (Toggle Switch) und ein LocalStorage Banner.
Der Toggel Switch ist ein benutzerdefinierter HTML/CSS-Stil für ein Kontrollkästchen (Checkbox), das wie ein Schalter aussieht. Der Toggel Switch wird verwendet, um zwischen dem Dark Mode und dem Light Mode zu wechseln. Der Schalter ändert die CSS-Variablen, um verschiedene Farbschemata für den Dark Mode und den Light Mode anzuwenden.
Das LocalStorage Banner ist ein Dialogfeld, das am unteren Bildschirmrand angezeigt wird, um den Benutzer darüber zu informieren, dass die Website LocalStorage verwendet, um ihre Dark-Mode-Einstellungen zu speichern. Der Benutzer kann auf die Schaltfläche "Akzeptieren" klicken, um das Banner zu schließen und seine Zustimmung zur Verwendung von LocalStorage zu geben.
Der JavaScript-Code verwaltet die Funktionalität für den Dark Mode, den Toggel Switch und das LocalStorage Banner. Beim Laden der Seite wird die Dark-Mode-Einstellung des Benutzers aus dem LocalStorage abgerufen und angewendet. Der Code behandelt auch das Speichern der Zustimmung des Benutzers zum LocalStorage Banner und das Ausblenden des Banners, wenn die Zustimmung erteilt wurde.
Insgesamt ermöglicht der bereitgestellte Code das Umschalten zwischen Dark Mode und Light Mode, indem die Website die Präferenzen des Benutzers in LocalStorage speichert, und informiert den Benutzer über die Verwendung von LocalStorage.