首頁 > web前端 > js教程 > Js中如何偵測使用者是否處於深色模式

Js中如何偵測使用者是否處於深色模式

王林
發布: 2024-08-24 22:30:03
原創
665 人瀏覽過

How to Detect if a User is in Dark Mode In Js

介紹

您有沒有想過網站如何根據您的喜好在淺色和深色模式之間無縫切換?這不是魔法,而是現代網路技術的巧妙運用。在這篇文章中,我將揭示檢測使用者是否喜歡深色模式的簡單而強大的技術,以及如何使用這些資訊來增強網站上的使用者體驗。

了解暗模式檢測

隨著深色模式的流行,許多網站和應用程式現在都提供符合使用者係統偏好的主題。此功能是使用 JavaScript 中的 matchMedia API 實現的,它允許 Web 應用程式響應媒體查詢的變化,例如使用者的配色方案首選項。

它是如何運作的

matchMedia API

window.matchMedia 方法提供了一種評估媒體查詢並根據使用者偏好調整網站外觀的方法。若要檢查是否啟用了深色模式,您可以使用下列 JavaScript 函數:

// Check if the user prefers dark mode
function isDarkMode() {
    return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
}
登入後複製

實際實施

index.html

<!DOCTYPE html>
<html>
<head>
    <title>Dark Mode Demo</title>
    <style>
        .dark {
            background: black;
            color: white;
        }
        .light {
            background: white;
            color: black;
        }
    </style>
</head>
<body>

    <h1>Hello, World!</h1>

    <!-- scripts -->
    <script>
        // Function to check if dark mode is enabled
        function isDarkMode() {
            return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
        }

        // Function to update the theme based on the user's preference
        function updateTheme() {
            if (isDarkMode()) {
                document.body.classList.add("dark");
                document.body.classList.remove("light");
            } else {
                document.body.classList.add("light");
                document.body.classList.remove("dark");
            }
        }

        // Initial theme setup
        updateTheme();

        // Listen for changes in the color scheme preference
        window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', updateTheme);
    </script>
</body>
</html>
登入後複製
  • updateTheme 函數:此函數檢查深色模式首選項並對應更新類別。 即時更新:matchMedia 新增事件監聽器,用於偵測配色方案首選項的變化,並呼叫更新主題來即時調整外觀。

當您更改系統的配色方案時,網站將自動適應以反映您的偏好,而無需刷新頁面。

在 GitHub 上追蹤我 Avinash Tare

以上是Js中如何偵測使用者是否處於深色模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板