当前位置:首页 > JavaScript

js实现简易换肤

2026-03-01 12:44:08JavaScript

实现简易换肤的 JavaScript 方法

动态修改 CSS 类名

通过切换 HTML 元素的类名来应用不同的样式。定义多套 CSS 主题类,例如:

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

JavaScript 切换逻辑:

document.getElementById('theme-toggle').addEventListener('click', function() {
  document.body.classList.toggle('theme-dark');
  document.body.classList.toggle('theme-light');
});

使用 CSS 变量动态控制

在根元素定义 CSS 变量:

:root {
  --primary-bg: #ffffff;
  --primary-text: #000000;
}
.dark-theme {
  --primary-bg: #222222;
  --primary-text: #ffffff;
}

通过 JavaScript 切换主题类:

function toggleTheme() {
  document.documentElement.classList.toggle('dark-theme');
}

通过修改 link 标签切换样式表

准备多套 CSS 文件(如 light.css 和 dark.css),动态切换:

function switchTheme(themeName) {
  const link = document.querySelector('link[rel="stylesheet"]');
  link.href = `${themeName}.css`;
}

localStorage 持久化存储主题

结合 localStorage 保存用户选择:

// 初始化时读取
const savedTheme = localStorage.getItem('theme') || 'light';
document.documentElement.className = savedTheme;

// 切换时保存
function toggleTheme() {
  const newTheme = document.documentElement.className === 'dark' ? 'light' : 'dark';
  document.documentElement.className = newTheme;
  localStorage.setItem('theme', newTheme);
}

完整示例代码

HTML 结构:

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

JavaScript 实现:

const toggleBtn = document.getElementById('theme-toggle');
const currentTheme = localStorage.getItem('theme') || 'light';
document.documentElement.setAttribute('data-theme', currentTheme);

toggleBtn.addEventListener('click', () => {
  const newTheme = document.documentElement.getAttribute('data-theme') === 'dark' 
    ? 'light' 
    : 'dark';
  document.documentElement.setAttribute('data-theme', newTheme);
  localStorage.setItem('theme', newTheme);
});

对应 CSS:

[data-theme="light"] {
  --bg-color: #ffffff;
  --text-color: #333333;
}
[data-theme="dark"] {
  --bg-color: #222222;
  --text-color: #eeeeee;
}
body {
  background: var(--bg-color);
  color: var(--text-color);
}

js实现简易换肤

标签: 简易换肤
分享给朋友:

相关文章

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.definePropert…

vue实现页面换肤

vue实现页面换肤

实现页面换肤的常见方法 CSS变量结合Vue响应式数据 通过Vue管理主题色变量,结合CSS变量实现动态切换。在根元素定义CSS变量: :root { --primary-color: #409…

vue中如何实现换肤

vue中如何实现换肤

实现 Vue 换肤的常见方法 使用 CSS 变量动态切换主题色 在 :root 或组件作用域中定义 CSS 变量,通过 JavaScript 动态修改变量值实现换肤。 /* 全局样式文件 */ :…

vue怎么实现换肤功能

vue怎么实现换肤功能

实现换肤功能的常见方法 动态切换CSS类名 通过绑定不同的类名实现换肤,定义多套主题样式,切换时动态修改根元素的类名。例如定义.theme-light和.theme-dark两套样式,通过docume…

vue组件库实现换肤

vue组件库实现换肤

实现 Vue 组件库换肤的常见方法 CSS 变量动态切换 通过定义 CSS 变量(Custom Properties)实现主题色的动态切换。在根元素(如 :root)中定义主题变量,组件内通过 var…

vue iview前端换肤实现

vue iview前端换肤实现

实现 Vue + iView 动态换肤 安装必要的依赖 确保项目中已安装 iview 和 less 或 less-loader,用于编译主题变量。若需动态切换主题,需安装 css-vars-ponyf…