js检测浏览器夜晚/黑暗(dark)模式方法

yizhihongxing

如何检测浏览器的夜晚/黑暗模式

当用户在电脑或手机等浏览器中将主题从白天模式切换到黑夜模式时,浏览器会触发媒体查询 prefers-color-scheme。我们可以利用 JavaScript 检测媒体查询条件,推断出当前是白天还是黑夜模式。

检测浏览器是否支持 prefers-color-scheme 媒体查询

在使用 prefers-color-scheme 媒体查询之前,我们需要检查浏览器是否支持该功能。如果浏览器不支持该特性,那么我们需要使用其他方法来检测浏览器是否处于黑暗模式。下面是基于 Modernizr 库(一个很棒的现代浏览器特性检测的库)检测浏览器是否支持 prefers-color-scheme 媒体查询的代码:

if (Modernizr.prefers_color_scheme) {
  // 支持prefers-color-scheme媒体查询
} else {
  // 不支持prefers-color-scheme媒体查询
}

使用 prefers-color-scheme 媒体查询检测夜晚/黑暗模式

现在,让我们通过一个 JavaScript 函数来检测浏览器是否启用了夜晚/黑暗模式。

function checkDarkMode() {
  if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
    return true;
  } else {
    return false;
  }
}

上面的代码首先检查了浏览器是否支持 matchMedia 方法,然后使用 '(prefers-color-scheme: dark)' 媒体查询字符串来检测当前是否启用了夜晚/黑暗模式。如果返回结果为 true 则代表夜晚/黑暗模式开启,否则代表未开启。

示例1:根据浏览器是否启用夜晚/黑暗模式对图片进行切换

下面是一个示例,如果浏览器启用了夜晚/黑暗模式,则页面上显示暗色主题图片,否则显示亮色主题图片。

<!-- 显示暗色主题图片 -->
<img src="dark.png" id="dark-img" style="display:none;">
<!-- 显示亮色主题图片 -->
<img src="light.png" id="light-img" style="display:none;">

<script>
  function checkDarkMode() {
    if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
      return true;
    } else {
      return false;
    }
  }

  if (checkDarkMode()) {
    document.getElementById('dark-img').style.display = 'block';
  } else {
    document.getElementById('light-img').style.display = 'block';
  }
</script>

示例2:使用CSS根据是否启用黑暗模式来改变网页主题

下面的示例演示了如何根据夜晚/黑暗模式将页面的主题颜色切换为黑色背景、白色字体。

body {
  background-color: #fff;
  color: #111;
}

@media (prefers-color-scheme: dark) {
  body {
    background-color: #111;
    color: #fff;
  }
}

上述 CSS 代码首先设置了正常情况下的页面样式,然后使用媒体查询 (prefers-color-scheme: dark) 来自动调整页面样式以适应夜晚/黑暗模式。在夜晚/黑暗模式中,背景颜色为黑色,字体颜色为白色。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js检测浏览器夜晚/黑暗(dark)模式方法 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript模板字符串用法实例

    JavaScript模板字符串用法实例 JavaScript模板字符串是一种能够很好地简化字符串拼接的技术,它支持在字符串中嵌入表达式和变量,并可以轻松地将多行代码合并为单个字符串。本文将介绍JavaScript模板字符串的用法,并提供一些示例说明。 创建模板字符串 在JavaScript中,创建模板字符串的方法是使用反引号 (\)将字符串括起来。下面是一个…

    JavaScript 2023年5月28日
    00
  • Javascript操纵Cookie实现购物车程序

    下面是关于“Javascript操纵Cookie实现购物车程序”的详细攻略: Cookie简介 Cookie是一种在网站之间传递信息的方式。它们是存储在用户计算机上的小文件,存储着网站访问者的信息。由于Cookie可以在用户计算机和后端服务器之间进行数据交换,所以开发人员可以使用它们来存储用户的信息,例如用户名和购物车内容。 创建Cookie 在JavaSc…

    JavaScript 2023年6月11日
    00
  • JavaScript数组的快速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)

    JavaScript是一门非常强大的编程语言,其中数组作为数据结构扮演着重要的角色。本文将为大家介绍JavaScript数组的快速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)的详细攻略。 JavaScript数组的快速克隆 JavaScript数组使用slice()函数可以迅速地创建一个数组的克隆。slice()函数可以截取数组的一…

    JavaScript 2023年5月27日
    00
  • 详解如何较好的使用js

    如何较好地使用 JavaScript 在网站开发中,JavaScript 是一个重要的工具。下面,我将分享一些如何最好地使用 JavaScript 的攻略,以便您可以将 JavaScript 发挥到最大的作用。 熟练掌握 JavaScript 语言基础 在编写 JavaScript 代码之前,首先需要了解基础语法,如数据类型、变量和运算符等。另外,熟练掌握流…

    JavaScript 2023年6月11日
    00
  • javascript 异常处理使用总结

    JavaScript 异常处理使用总结 什么是 JavaScript 异常处理? JavaScript 异常处理是指,在 JavaScript 代码运行过程中发生错误时,能够通过编写特定的代码来处理这些错误,以保证代码的正常运行。 为什么需要 JavaScript 异常处理? 在 JavaScript 代码中,错误的出现是不可避免的。如果我们不处理这些错误,…

    JavaScript 2023年5月27日
    00
  • javascript实现的字符串与十六进制表示字符串相互转换方法

    当我们需要将一个字符串转换为十六进制格式时,可以使用 JavaScript 中的 toString(16) 方法来实现。而将十六进制格式的字符串转换为正常的字符串时,则需要先将其转换为十进制数,再调用字符编码方法 String.fromCharCode() 来获取字符串。 字符串转换为十六进制格式字符串 以下是一个示例代码: const str = ‘hel…

    JavaScript 2023年5月19日
    00
  • JavaScript常用标签和方法总结

    针对这个话题,我准备了以下完整攻略。 JavaScript常用标签和方法总结 标签 在JavaScript中,我们通常使用以下标签: \<script> – 嵌入JavaScript代码的标签,可以放在HTML的\<head>或\<body>中。 \<button> – 创建一个按钮元素,可以用JavaScri…

    JavaScript 2023年5月18日
    00
  • Javascript Array toString 方法

    以下是关于JavaScript Array toString方法的完整攻略。 JavaScript Array toString方法 JavaScript Array toString方法用于将数组转换为字符串。该方法会将数组中的每个元素转换为字符串,并使用逗号分隔符将它们连接起来。 下面是一个使用toString方法的示例: var arr = [1, 2…

    JavaScript 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部