fix: theme flash
This commit is contained in:
parent
cf99fba91c
commit
422ac5fb79
5 changed files with 78 additions and 38 deletions
|
@ -42,26 +42,16 @@ if (window.location.hostname !== 'localhost') {
|
|||
|
||||
;(async function() {
|
||||
const btn = document.querySelector('.theme__toggle');
|
||||
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
const currentTheme = localStorage?.getItem('theme');
|
||||
let theme;
|
||||
|
||||
if (!currentTheme) localStorage?.setItem('theme', (prefersDarkScheme ? 'dark' : 'light'))
|
||||
|
||||
if (currentTheme === 'dark') {
|
||||
document.body.classList.toggle('theme__dark');
|
||||
} else if (currentTheme === 'light') {
|
||||
document.body.classList.toggle('theme__light');
|
||||
} else if (prefersDarkScheme) {
|
||||
document.body.classList.toggle('theme__dark');
|
||||
} else if (!prefersDarkScheme) {
|
||||
document.body.classList.toggle('theme__light');
|
||||
}
|
||||
|
||||
btn.addEventListener('click', () => {
|
||||
document.body.classList.toggle('theme__light');
|
||||
document.body.classList.toggle('theme__dark');
|
||||
|
||||
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
const currentTheme = localStorage?.getItem('theme');
|
||||
let theme;
|
||||
|
||||
if (!currentTheme) localStorage?.setItem('theme', (prefersDarkScheme ? 'dark' : 'light'))
|
||||
|
||||
if (prefersDarkScheme) {
|
||||
theme = document.body.classList.contains('theme__light') ? 'light' : 'dark';
|
||||
} else {
|
||||
|
|
24
src/assets/scripts/theme.js
Normal file
24
src/assets/scripts/theme.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
;(function() {
|
||||
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
const currentTheme = localStorage?.getItem('theme');
|
||||
let theme;
|
||||
|
||||
if (!currentTheme) localStorage?.setItem('theme', (prefersDarkScheme ? 'dark' : 'light'))
|
||||
|
||||
if (currentTheme === 'dark') {
|
||||
document.body.classList.add('theme__dark');
|
||||
} else if (currentTheme === 'light') {
|
||||
document.body.classList.add('theme__light');
|
||||
} else if (prefersDarkScheme) {
|
||||
document.body.classList.add('theme__dark');
|
||||
} else if (!prefersDarkScheme) {
|
||||
document.body.classList.add('theme__light');
|
||||
}
|
||||
|
||||
if (prefersDarkScheme) {
|
||||
theme = document.body.classList.contains('theme__light') ? 'light' : 'dark';
|
||||
} else {
|
||||
theme = document.body.classList.contains('theme__dark') ? 'dark' : 'light';
|
||||
}
|
||||
localStorage?.setItem('theme', theme);
|
||||
})()
|
Reference in a new issue