当前位置:首页 > JavaScript

js 实现更换主题

2026-04-07 14:55:52JavaScript

使用 CSS 变量实现主题切换

通过 CSS 变量定义主题颜色,JavaScript 动态修改变量值实现切换。

:root {
  --primary-color: #3498db;
  --background-color: #ffffff;
  --text-color: #333333;
}

.dark-theme {
  --primary-color: #9b59b6;
  --background-color: #2c3e50;
  --text-color: #ecf0f1;
}
function toggleTheme() {
  document.body.classList.toggle('dark-theme');
}

通过类名切换主题

定义不同主题的样式类,JavaScript 切换类名。

.light-theme {
  background-color: white;
  color: black;
}

.dark-theme {
  background-color: black;
  color: white;
}
function setTheme(themeName) {
  document.body.className = themeName;
}

使用 localStorage 保存主题偏好

结合 localStorage 实现主题记忆功能。

function saveThemePreference(theme) {
  localStorage.setItem('theme', theme);
}

function loadThemePreference() {
  const savedTheme = localStorage.getItem('theme');
  if (savedTheme) {
    setTheme(savedTheme);
  }
}

// 页面加载时调用
loadThemePreference();

完整实现示例

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

function applyTheme(theme) {
  document.body.className = theme;
  localStorage.setItem('theme', theme);
}

function toggleTheme() {
  const currentTheme = localStorage.getItem('theme');
  const newTheme = currentTheme === 'dark-theme' ? 'light-theme' : 'dark-theme';
  applyTheme(newTheme);
}

// 初始化主题
const savedTheme = localStorage.getItem('theme') || 
                  (prefersDarkScheme.matches ? 'dark-theme' : 'light-theme');
applyTheme(savedTheme);

// 添加事件监听
themeToggle.addEventListener('click', toggleTheme);

响应系统偏好

自动检测用户系统主题偏好。

const colorSchemeQuery = window.matchMedia('(prefers-color-scheme: dark)');

function handleColorSchemeChange(e) {
  const newTheme = e.matches ? 'dark-theme' : 'light-theme';
  applyTheme(newTheme);
}

colorSchemeQuery.addListener(handleColorSchemeChange);

使用 CSS 媒体查询

通过 prefers-color-scheme 媒体查询实现系统级主题适配。

js 实现更换主题

@media (prefers-color-scheme: dark) {
  :root {
    --primary-color: #9b59b6;
    --background-color: #2c3e50;
    --text-color: #ecf0f1;
  }
}

这些方法可以根据项目需求单独或组合使用,实现灵活的主题切换功能。

标签: 主题js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…