/

如何使用JavaScript檢測暗模式

如何使用JavaScript檢測暗模式

使用JavaScript來檢測暗模式及檢測模式變更

使用CSS,我們可以使用prefers-color-scheme媒體查詢檢測暗模式。

但是… 如果我們必須使用JavaScript呢?最近我遇到了這個問題,因為我有一些JavaScript代碼,該代碼會將圖像添加到頁面上,但我想根據亮/暗模式顯示不同的圖像。

以下是我們可以實現的方法。

首先,檢測matchMedia對象是否存在(否則瀏覽器不支持暗模式,您可以回退到亮模式)。

然後,使用以下代碼檢查是否為暗模式:

1
window.matchMedia('(prefers-color-scheme: dark)').matches

如果啟用了暗模式,它將返回true

以下是一個完整的示例,如果為暗模式則反轉圖像的顏色:

1
2
3
4
5
const img = document.querySelector('#myimage')
if (window.matchMedia &&
window.matchMedia('(prefers-color-scheme: dark)').matches) {
img.style.filter="invert(100%)";
}

然而,還存在一個問題:如果使用者在使用我們的網站時更改了模式該怎麼辦?

我們可以使用事件監聽器來檢測模式的變更,像這樣:

1
2
3
4
5
6
7
8
window.matchMedia('(prefers-color-scheme: dark)')
.addEventListener('change', event => {
if (event.matches) {
//暗模式
} else {
//亮模式
}
})

tags: [“JavaScript”, “暗模式”, “matchMedia”, “事件監聽器”]