当前位置:首页 > JavaScript

js实现暗黑模式

2026-04-07 14:39:59JavaScript

实现暗黑模式的JavaScript方法

通过JavaScript和CSS结合实现暗黑模式切换功能,以下是具体实现步骤:

方法1:使用CSS变量切换主题

在CSS中定义两套颜色变量,通过切换类名实现主题变更:

:root {
  --bg-color: #ffffff;
  --text-color: #333333;
}

.dark-mode {
  --bg-color: #121212;
  --text-color: #f0f0f0;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
  transition: background 0.3s ease;
}

JavaScript切换逻辑:

const toggleBtn = document.getElementById('theme-toggle');
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');

function toggleTheme() {
  document.body.classList.toggle('dark-mode');
  localStorage.setItem('theme', document.body.classList.contains('dark-mode') ? 'dark' : 'light');
}

// 初始化检查
if (localStorage.getItem('theme') === 'dark' || 
    (prefersDarkScheme.matches && !localStorage.getItem('theme'))) {
  document.body.classList.add('dark-mode');
}

toggleBtn.addEventListener('click', toggleTheme);

方法2:直接修改样式属性

适用于简单场景的快速实现:

function toggleDarkMode() {
  const isDark = document.body.style.backgroundColor === 'rgb(18, 18, 18)';
  document.body.style.backgroundColor = isDark ? '#ffffff' : '#121212';
  document.body.style.color = isDark ? '#333333' : '#f0f0f0';
}

方法3:使用Tailwind CSS的暗黑模式

如果使用Tailwind CSS,配置更简单:

  1. 在tailwind.config.js中添加:

    module.exports = {
    darkMode: 'class',
    // ...
    }
  2. 切换逻辑:

    js实现暗黑模式

    document.documentElement.classList.toggle('dark');
    localStorage.setItem('darkMode', 
    document.documentElement.classList.contains('dark'));

注意事项

  • 使用localStorage保存用户偏好
  • 添加transition属性实现平滑过渡效果
  • 考虑系统偏好设置:window.matchMedia('(prefers-color-scheme: dark)')
  • 对于复杂项目,建议使用CSS变量方案维护性更好

完整示例HTML结构

<button id="theme-toggle">切换主题</button>

<script>
  // 这里放置上述JavaScript代码
</script>

标签: 模式js
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…

js尚未实现

js尚未实现

JavaScript 尚未实现的功能 JavaScript 作为一门不断发展的语言,仍有一些功能尚未被原生支持或标准化。以下是一些常见的尚未实现的功能或特性: Promise.any() 的替代方案…