簡單幾步實現頁面主題切換


純css

用戶是否開啟夜間模式可以使用媒體查詢@media (prefers-color-scheme: light | dark)來查看,這樣只需要配合:root的css變量就可以進行設置整個網站的主題顏色

配合js設置主題

上面的只是簡單介紹,實際問題是我在我的瀏覽器上找不到改變主題咋辦啊?當然是用js來改了,通過MDN能找到對於:root的介紹:

:root 這個 CSS 偽類匹配文檔樹的根元素。對於 HTML 來說,:root 表示 <html> 元素,除了優先級更高之外,與 html 選擇器相同。

這說明通過document.documentElement的結果和:root是一樣的,然后根據上面提到的MDN文檔,我們可以通過element.style.setProperty來修改css變量,那整個替換主題的思路就能出來了

這是我寫的一個修改主題的函數,只要設置Theme的值,就能修改頁面的主題

export default function setTheme(theme = "dark") {
    // 檢測是否支持css變量
    if (!window?.CSS?.supports("--a", 0)) return false;

    // 設置主題
    const Theme = {
        dark: [["--text", "#ffffff"]],
        light: [["--text", "#000000"]],
    };

    for (const theme of Theme[theme]) {
        document.documentElement.style.setProperty(...theme);
    }
}

最后只要用localStorage儲存用戶的主題設置,就可以輕松完成主題切換按鈕


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM