使用媒介查詢prefers-color-scheme
,支持dark,light,no-preference三種模式。css
@media (prefers-color-scheme: dark) { body { background: #121212; } article{ color:rgba(255,255,255,.86); } }
使用matchMedia
判斷是否符合媒介。
返回一個MediaQueryList
對象,該對象具備屬性matches
和media
,方法addListener
和removeListener
。
判斷是否支持主題色:html
if (window.matchMedia('(prefers-color-scheme)').media === 'not all') { console.log('Browser doesn\'t support dark mode'); }
判斷是否處於深色模式:ios
if(window.matchMedia('(prefers-color-scheme: dark)').matches){ //... }
addListener
接收一個MediaQueryList
對象做爲參數。
爲深色模式添加監聽器,以響應系統切換到或切換出深色模式:app
let listeners={ dark:(mediaQueryList )=>{ if(mediaQueryList.matches){ alert('您切換到深色模式了!') } }, light:(mediaQueryList)=>{ if(mediaQueryList.matches){ alert('您切換到淺色模式了!') } } } window.matchMedia('(prefers-color-scheme: dark)').addListener(listeners.dark) window.matchMedia('(prefers-color-scheme: light)').addListener(listeners.light)