feat(theme): 主题优化

这个提交包含在:
2024-08-22 10:48:27 +08:00
未验证
父节点 90cb1e54c4
当前提交 051c1250f5
修改 3 个文件,包含 25 行新增20 行删除
+22
查看文件
@@ -1,3 +1,4 @@
// 文字打字机效果
export const typewriterEffect = (selectors: string) => { export const typewriterEffect = (selectors: string) => {
const typedTextContainer = document.querySelector<HTMLDivElement>(selectors) const typedTextContainer = document.querySelector<HTMLDivElement>(selectors)
@@ -20,4 +21,25 @@ export const typewriterEffect = (selectors: string) => {
} }
typewriter() typewriter()
}
// 切换黑白主题
export const handleToggleThemeMode = (selectors: string) => {
const toggleButton = document.querySelector<HTMLDivElement>(selectors);
if(!toggleButton) return
const storedTheme = localStorage.getItem("theme-mode") || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
if (storedTheme) document.documentElement.setAttribute("data-color-scheme", storedTheme);
toggleButton.onclick = function () {
const currentTheme = document.documentElement.getAttribute("data-color-scheme");
const targetTheme = currentTheme === "dark" ? "light" : "dark";
document.documentElement.setAttribute("data-color-scheme", targetTheme);
localStorage.setItem("theme-mode", targetTheme);
};
} }
+3 -1
查看文件
@@ -5,7 +5,7 @@ import './styles/font-hack.scss'
import Alpine from 'alpinejs' import Alpine from 'alpinejs'
import upvote from './upvote' import upvote from './upvote'
import {typewriterEffect} from './custom' import {typewriterEffect, handleToggleThemeMode} from './custom'
window.Alpine = Alpine window.Alpine = Alpine
@@ -15,4 +15,6 @@ Alpine.start()
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
typewriterEffect('.typed-text') typewriterEffect('.typed-text')
handleToggleThemeMode('#theme-toggle')
}) })
@@ -66,24 +66,5 @@
</li> </li>
</ul> </ul>
</nav> </nav>
<script>
var toggle = document.getElementById("theme-toggle");
var storedTheme =
localStorage.getItem("theme") || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
if (storedTheme) document.documentElement.setAttribute("data-color-scheme", storedTheme);
toggle.onclick = function () {
var currentTheme = document.documentElement.getAttribute("data-color-scheme");
var targetTheme = "light";
if (currentTheme === "light") {
targetTheme = "dark";
}
document.documentElement.setAttribute("data-color-scheme", targetTheme);
localStorage.setItem("theme", targetTheme);
};
</script>
</div> </div>
</header> </header>