summaryrefslogtreecommitdiff
path: root/js/theme-switch.js
blob: 4dddd30496db557e4b445d2d5c4ce04c3cdae2de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
document.addEventListener('DOMContentLoaded', () => {
  const themeSwitch = document.getElementById('theme-switch-btn');
  const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');
  
  // 检查本地存储中的主题设置
  const currentTheme = localStorage.getItem('theme');
  if (currentTheme === 'dark') {
    document.body.classList.add('dark-theme');
    themeSwitch.querySelector('i').classList.replace('icon-moon', 'icon-sun');
  } else if (currentTheme === 'light') {
    document.body.classList.remove('dark-theme');
  } else if (prefersDarkScheme.matches) {
    document.body.classList.add('dark-theme');
    themeSwitch.querySelector('i').classList.replace('icon-moon', 'icon-sun');
  }
  
  // 切换主题
  themeSwitch.addEventListener('click', (e) => {
    e.preventDefault();
    
    if (document.body.classList.contains('dark-theme')) {
      document.body.classList.remove('dark-theme');
      localStorage.setItem('theme', 'light');
      themeSwitch.querySelector('i').classList.replace('icon-sun', 'icon-moon');
    } else {
      document.body.classList.add('dark-theme');
      localStorage.setItem('theme', 'dark');
      themeSwitch.querySelector('i').classList.replace('icon-moon', 'icon-sun');
    }
  });
});