Code前端首页关于Code前端联系我们

js检测夜间(黑暗)模式

terry 2年前 (2023-09-09) 阅读数 202 #Javascript

使用js检测夜间(黑暗)模式并检测模式变化

js检测夜晚(dark)模式

使用CSS,我们可以使用媒体查询首选颜色方案来检测深色模式。

但是..如果我们必须使用 JavaScript 怎么办?我最近遇到了这个问题,因为我有 JavaScript 代码将图像添加到页面,但我想根据浅色和深色模式显示不同的图像。

这是我的解决方案。

首先发现matchMedia对象是否存在(否则浏览器不支持深色模式,你可以回退到浅色模式)。

使用以下命令检查是否处于深色模式:

/**
* 前端教程网
* https://www.pipipi.net
**/
window.matchMedia('(prefers-color-scheme: dark)').matches

如果启用深色模式,则返回 true。

这是一个完美的示例,如果图像处于深色模式,我会反转图像的颜色:

/**
* 前端教程网
* https://www.pipipi.net
**/
const img = document.querySelector('#myimage')
if (window.matchMedia && 
    window.matchMedia('(prefers-color-scheme: dark)').matches) {
  img.style.filter="invert(100%)";
}

但是,有一个小问题:如果用户在使用我们的网站时更改模式怎么办?

我们可以使用事件监听器来检测schema的变化,实现代码如下:

/**
* 前端教程网
* https://www.pipipi.net
**/
window.matchMedia('(prefers-color-scheme: dark)')
      .addEventListener('change', event => {
  if (event.matches) {
    //dark mode
  } else {
    //light mode
  }
})

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门