import { CONFIG, HTML } from './globalVars' /** * 更改日夜模式 */ export const changeTheme = (type?: string) => { const btn = document.querySelector('.theme .ic') if (type === 'dark') { HTML.setAttribute('data-theme', type) btn.classList.remove('i-sun') btn.classList.add('i-moon') } else { HTML.removeAttribute('data-theme') btn.classList.remove('i-moon') btn.classList.add('i-sun') } } /** * 自动调整黑夜白天 * 优先级: 手动选择>时间>跟随系统 */ export const autoDarkmode = () => { if (CONFIG.auto_dark.enable) { if (new Date().getHours() >= CONFIG.auto_dark.start || new Date().getHours() <= CONFIG.auto_dark.end) { changeTheme('dark') } else { changeTheme() } } } /** * 更改主题的meta */ export const changeMetaTheme = (color: string): void => { if (HTML.getAttribute('data-theme') === 'dark') { color = '#222' } document.querySelector('meta[name="theme-color"]').setAttribute('content', color) } // 记忆日夜模式切换和系统亮暗模式监听 export const themeColorListener = () => { window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (mediaQueryList) => { if (mediaQueryList.matches) { changeTheme('dark') } else { changeTheme() } }) const t = localStorage.getItem('theme') if (t) { changeTheme(t) } else { if (CONFIG.darkmode) { changeTheme('dark') } } }