主题模式功能移植说明

· 默认分类

主题模式功能移植说明

概述

已成功将 typecho-default-ultra-theme-2.5 主题的主题模式切换功能移植到 typecho-theme-final 主题。

新增功能

1. 主题模式切换

2. 切换方式

3. 记忆功能

修改文件清单

1. functions.php

位置: typecho-theme-final/functions.php

新增配置项:

2. header.php

位置: typecho-theme-final/header.php

修改内容:

3. footer.php

位置: typecho-theme-final/footer.php

新增内容:

4. style.css

位置: typecho-theme-final/style.css

新增样式:

使用方法

1. 启用主题模式切换

在 Typecho 后台进入 外观 → 设置外观

  1. 是否启用主题模式切换: 选择 "是"
  2. 默认外观: 选择默认主题模式

    • 跟随系统:根据用户操作系统设置自动切换
    • 亮色模式:始终使用亮色主题
    • 深色模式:始终使用深色主题
    • 护眼模式:始终使用护眼主题(米黄色背景)

2. 启用悬浮切换按钮(可选)

如果希望在页面右下角显示快速切换按钮:

  1. 是否启用主题模式切换: 选择 "是"
  2. 是否启用主题模式切换悬浮按钮: 选择 "是"

3. 用户使用体验

方式一:使用下拉选择器

方式二:使用悬浮按钮

技术实现细节

CSS 变量系统

使用 CSS 变量实现主题切换,所有颜色通过变量控制:

:root {
    --background-color: #fff;
    --text-color: #222;
    --link-color: #222;
    --code-background-color: #F0F0F0;
    /* ... 更多变量 ... */
}

[theme-mode="dark"] {
    --background-color: #1c1c1c;
    --text-color: #e0e0e0;
    /* ... 深色模式变量 ... */
}

[theme-mode="read"] {
    --background-color: #F2F1EA;
    --text-color: #474135;
    /* ... 护眼模式变量 ... */
}

JavaScript 逻辑

兼容性

注意事项

  1. 必须先启用"主题模式切换": 悬浮按钮依赖主题模式切换功能,必须先启用
  2. LocalStorage 依赖: 主题偏好存储在浏览器 localStorage,清除浏览器数据会重置为默认主题
  3. 跟随系统模式: 选择"跟随系统"时,主题会根据操作系统的日间/夜间模式自动切换
  4. 移动端适配: 悬浮按钮在移动端同样可用,位置和大小已优化

效果预览

亮色模式

深色模式

护眼模式

完成情况

✅ functions.php - 添加配置项
✅ header.php - 添加选择器和 body 属性
✅ footer.php - 添加悬浮按钮和 JavaScript 逻辑
✅ style.css - 添加主题模式样式和 CSS 变量

所有功能已完成移植,可以正常使用!

后续优化建议

  1. 可以考虑添加更多主题模式(如护眼模式) ✅ 已完成
  2. 可以优化过渡动画,让主题切换更流畅
  3. 可以添加主题预览功能
  4. 可以考虑添加自定义主题颜色功能
  5. 可以添加更多护眼模式的色彩方案供选择