当前位置:首页 > JavaScript

用js实现换肤

2026-02-02 23:29:48JavaScript

使用CSS变量实现换肤

通过CSS变量(Custom Properties)可以轻松实现换肤功能。定义不同主题的颜色变量,通过JavaScript切换这些变量。

:root {
  --primary-color: #3498db;
  --secondary-color: #2ecc71;
  --text-color: #333;
}

.dark-theme {
  --primary-color: #2980b9;
  --secondary-color: #27ae60;
  --text-color: #fff;
}
function toggleTheme() {
  document.body.classList.toggle('dark-theme');
}

使用类名切换主题

为不同主题创建独立的CSS类,通过JavaScript动态添加或移除这些类来改变样式。

.light-theme {
  background-color: #fff;
  color: #333;
}

.dark-theme {
  background-color: #333;
  color: #fff;
}
function switchTheme(themeName) {
  document.body.className = themeName;
}

使用localStorage保存主题偏好

结合localStorage可以实现用户选择的主题持久化,下次访问时自动应用上次选择的主题。

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

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

// 页面加载时应用保存的主题
window.addEventListener('DOMContentLoaded', loadTheme);

动态加载CSS文件

对于复杂的主题系统,可以创建不同的CSS文件,通过JavaScript动态加载对应的样式表。

function loadThemeCSS(themeName) {
  const link = document.createElement('link');
  link.rel = 'stylesheet';
  link.href = `themes/${themeName}.css`;
  document.head.appendChild(link);
}

响应式主题切换

结合CSS媒体查询和JavaScript,可以实现根据系统偏好自动切换主题。

@media (prefers-color-scheme: dark) {
  :root {
    --primary-color: #2980b9;
    --secondary-color: #27ae60;
    --text-color: #fff;
  }
}
function detectSystemTheme() {
  const darkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
  return darkMode ? 'dark' : 'light';
}

function applySystemTheme() {
  const theme = detectSystemTheme();
  setTheme(theme);
}

window.matchMedia('(prefers-color-scheme: dark)').addListener(applySystemTheme);

用js实现换肤

标签: 换肤js
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 j…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaS…