html主题切换小demo

主题切换功能为网页和应用程序提供了多样化的视觉风格与使用体验。实现多主题切换的技术方案丰富多样,其中 CSS 变量和 JavaScript 样式控制是较为常见的实现方式。

以下是一个简洁的多主题切换示例,愿它能为您的编程之旅增添一份趣味。

代码展示

html 复制代码
<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>多主题切换 Demo</title>
  <style>
    :root {
      --bg-color: #ffffff;
      --text-color: #000000;
    }

    body {
      background-color: var(--bg-color);
      color: var(--text-color);
      font-family: sans-serif; /* 字体 */
      text-align: center; /* 居中对齐 */
      transition: background-color 0.3s, color 0.3s; /* 过渡效果 */
      padding-top: 100px; /* 顶部内边距 */
    }

    .dark-theme { /* 暗黑主题 */
      --bg-color: #121212;  /* 背景色 */
      --text-color: #eeeeee; /* 文字色 */
    }

    .blue-theme { /* 蓝色主题 */
      --bg-color: #e3f2fd;
      --text-color: #1565c0;
    }

    .green-theme { /* 绿色主题 */
      --bg-color: #e8f5e9;
      --text-color: #2e7d32;
    }

    .red-theme { 
      --bg-color: #ffebee; 
      --text-color: #c62828; 
    }
    .purple-theme { --bg-color: #f3e5f5; 
      --text-color: #6a1b9a; }
    .orange-theme { 
      --bg-color: #fff3e0; 
      --text-color: #ef6c00; 
    }
    .gray-theme { 
      --bg-color: #f5f5f5; 
      --text-color: #424242; 
    }

    select, button {
      padding: 10px 20px;
      font-size: 16px;
      margin-top: 20px;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <h1>选择主题</h1>
  <p>这是个主题是 <span id="currentTheme">默认</span></p>
  <select id="themeSelector" onchange="changeTheme()">
    <option value="">默认</option>
    <option value="dark-theme">暗黑</option>
    <option value="blue-theme">蓝色</option>
    <option value="green-theme">绿色</option>
    <option value="red-theme">红色</option>
    <option value="purple-theme">紫色</option>
    <option value="orange-theme">橙色</option>
    <option value="gray-theme">灰色</option>
  </select>

  <script>
    function changeTheme() {
      const theme = document.getElementById('themeSelector').value;
      document.body.className = theme;
      const themeName = theme ? theme.split('-')[0] : '默认';
      document.getElementById('currentTheme').textContent = themeName;
    }
  </script>
</body>
</html>

效果展示

实现原理解析

该 demo 的核心思想是通过 CSS标签引入不同的样式,并使用 JavaScript 修改其 href 属性,从而实现动态更换主题的功能。这种方式简单直观,适用于中小型项目或学习用途。

扩展建议

如果你希望进一步优化这个功能,可以考虑以下几点:

  • 使用 localStorage 记住用户选择的主题;

  • 使用 CSS 变量搭配类名控制,减少重复代码;

  • 使用框架(如 Vue/React)时结合组件化设计进行封装;

  • 添加动画过渡效果,提升用户体验。

相关推荐
王者鳜錸16 分钟前
Vue3集成Element Plus完整指南:从安装到主题定制下-实现后台管理系统框架搭建
前端·javascript·vue.js
YJlio18 分钟前
优启通添加自定义浏览器及EXLOAD使用技巧分享
前端
EthanPan_33 分钟前
【npm】npm命令大全
前端·npm·node.js
Hello-Mr.Wang41 分钟前
Vue 3 实现 Excel 表格解析的完整指南
前端·vue·excel
EndingCoder1 小时前
React从基础入门到高级实战:React 基础入门 - 简介与开发环境搭建
前端·javascript·react.js·前端框架
劲爽小猴头1 小时前
HTML5快速入门-常用标签及其属性(三)
前端·html·html5
二十雨辰2 小时前
[CSS3]Flex布局
前端·html·css3
小镇学者2 小时前
【JS】Vue 3中ref与reactive的核心区别及使用场景
前端·javascript·vue.js
xosg3 小时前
HTMLUnknownElement的使用
java·前端·javascript
xosg3 小时前
如何选用正确的html元素
前端·html