js檢測(cè)瀏覽器夜晚/黑暗(dark)模式方法
使用CSS,我們可以使用preferreds-color-scheme媒體查詢來檢測(cè)暗模式。
但是..如果我們必須使用JavaScript怎么辦? 我最近偶然發(fā)現(xiàn)了這個(gè)問題,因?yàn)槲矣幸恍㎎avaScript代碼向頁面添加了圖像,但是我想基于明暗模式顯示不同的圖像。
這是俺的解決辦法。
首先,檢測(cè)matchMedia對(duì)象是否存在(否則瀏覽器不支持夜晚模式(dark mode),您可以退回到白天模式(light mode))。
使用以下命令檢查其是否為夜晚模式(dark mode):
window.matchMedia('(prefers-color-scheme: dark)').matches
如果啟用了暗模式,則將返回true。
這是一個(gè)完整的示例,如果圖像為夜晚模式(dark mode),我將反轉(zhuǎn)圖像的顏色:
const img = document.querySelector('#myimage') if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { img.style.filter="invert(100%)"; }
但是,存在一個(gè)小問題:如果用戶在使用我們的網(wǎng)站時(shí)更改了模式怎么辦?
我們可以使用事件偵聽器檢測(cè)模式更改,實(shí)現(xiàn)代碼如下所示:
window.matchMedia('(prefers-color-scheme: dark)') .addEventListener('change', event => { if (event.matches) { //dark mode } else { //light mode } })
更多關(guān)于js檢測(cè)瀏覽器夜晚(dark)模式方法請(qǐng)查看下面的相關(guān)鏈接
相關(guān)文章
ECMAScript 5嚴(yán)格模式(Strict Mode)介紹
這篇文章主要介紹了ECMAScript 5嚴(yán)格模式(Strict Mode)介紹,本文講解了如何啟用嚴(yán)格模式、啟用嚴(yán)格模式后對(duì)變量和屬性、函數(shù)、with語句的影響,需要的朋友可以參考下2015-03-03Javascript的時(shí)間戳和php的時(shí)間戳轉(zhuǎn)換注意事項(xiàng)
需要注意的是js的時(shí)間戳是13位,php的時(shí)間戳是10位,轉(zhuǎn)換函數(shù)如下,感興趣的朋友可以參考下哈2013-04-04深入理解JavaScript系列(19):求值策略(Evaluation strategy)詳解
這篇文章主要介紹了深入理解JavaScript系列(19):求值策略(Evaluation strategy)詳解,本文講解了一般理論、按值傳遞、按引用傳遞、按共享傳遞(Call by sharing)、按共享傳遞是按值傳遞的特例等內(nèi)容,需要的朋友可以參考下2015-03-03