当前位置:首页 > 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动态添加或移除这些类来改变样式。

用js实现换肤

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

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

使用localStorage保存主题偏好

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

用js实现换肤

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实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…