AleksMey
@AleksMey
Пытаюсь разобраться

Знает кто js скрипт смены темы, который стабильно работает при переходе по страницам?

Ребят, подскажите скрипт для смены темы на тёмную, который при переходе по страница не будет сбрасываться. Все скрипты которые юзал, при переходе по страницам на долю секунды сбрасывается и показывается светлая, если находишься в тёмной и наоборот.

Сейчас использую этот:
// Theme swither

function setDarkTheme()
{
    document.documentElement.classList.remove("light");
    document.documentElement.classList.add("dark");
    localStorage.setItem("theme", "dark");
}

function setLightTheme()
{
    document.documentElement.classList.remove("dark");
    document.documentElement.classList.add("light");
    localStorage.setItem("theme", "light");
}

function setPreferredTheme()
{
    if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
      setDarkTheme();
    } else {
      setLightTheme();
    }
}

function isDarkTheme()
{
  return localStorage.getItem("theme") == "dark";
}

function setChoosenTheme()
{
    let theme = localStorage.getItem("theme");
  
    if (theme == "dark")
    {
        setDarkTheme();
    } else if (theme == "light")
    {
        setLightTheme();
    }
    else
    {
        setPreferredTheme();
    }
}

function toggleDarkMode() {
  if (isDarkTheme()) {
    setLightTheme();
  } else {
    setDarkTheme();
  }
}

window.matchMedia('(prefers-color-scheme: dark)').onchange = (e) => setChoosenTheme();

setChoosenTheme();
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@historydev Куратор тега JavaScript
Острая аллергия на анимешников
function setDarkTheme()
{
    localStorage.setItem('theme', 'dark');
}

document.body.onload = () => {

  const theme = localStorage.getItem('theme');

  if(theme) {

     if(theme === 'dark') {

          document.documentElement.classList.remove("light");
          document.documentElement.classList.add("dark");
          localStorage.setItem("theme", "dark");

     } else if(1 !== 2) {
         //another theme
     }

  }

}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы