菜单

主题系统

相关源文件

目的与范围

GitHub Readme Stats 的主题系统提供了一种无需手动指定颜色即可自定义所有统计卡片视觉外观的方式。本文档描述了主题的定义结构、主题的使用方法、可用的主题以及主题文档的生成过程。有关布局和显示参数等其他自定义选项的信息,请参阅布局和显示选项

主题系统架构

主题系统包含三个主要组件:主题定义、卡片渲染器中的主题应用机制以及主题文档生成器。

主题系统概述

来源:themes/index.js1-467 scripts/generate-theme-doc.js1-118

主题应用流程

来源:themes/index.js1-467

主题定义

GitHub Readme Stats 中的主题在 themes/index.js 文件中被定义为具有特定颜色属性的 JavaScript 对象。每个主题都是一组命名的颜色集合,用于控制渲染卡片的各种元素。

主题结构

主题对象包含以下颜色属性

来源:themes/index.js2-7

默认主题

该系统提供了两个默认主题

  1. default - 用于统计卡片、热门语言卡片、gist 卡片和 WakaTime 卡片
  2. default_repocard - 专门为仓库卡片优化

以下是默认主题的比较

属性默认default_repocard
title_color2f80ed2f80ed
icon_color4c71f2586069
text_color434d58434d58
bg_colorfffefefffefe
border_colore4e2e2(未定义)

来源:themes/index.js2-14

特殊主题类型

除了标准的纯色主题外,还有特殊的主题类型

  1. 透明主题 - 使用透明背景(例如,transparent 主题)
  2. 阴影主题 - 使用透明背景和彩色边框(例如,shadow_redshadow_greenshadow_blue
  3. 渐变主题 - 使用渐变背景(例如,ambient_gradient

来源:themes/index.js15-464

主题使用

要将主题应用于任何 GitHub Readme Stats 卡片,请将 ?theme=THEME_NAME 参数添加到卡片 URL。

使用示例

此示例将 dark 主题应用于统计卡片。主题参数适用于所有卡片类型

  • 统计卡片
  • 仓库卡片
  • 热门语言卡片
  • Gist 卡片
  • WakaTime 卡片

来源:themes/README.md5-10

可用主题

GitHub Readme Stats 包含 60 多个内置主题。以下是一些流行主题的示例

主题名称描述
dark深色背景,白色文本和绿色图标
radical深紫色背景,粉色和黄色点缀
merko深绿色背景,浅绿色点缀
tokyonight深蓝色背景,浅蓝色和紫色点缀
dracula经典的 Dracula 主题,深色背景,粉色/蓝色点缀
github_darkGitHub 的深色主题
transparent透明背景
vueVue.js 颜色,浅色背景
vue-darkVue.js 颜色,深色背景

有关可用主题及其视觉示例的完整列表,请参阅themes/README.md 文件。

来源:themes/index.js15-464 themes/README.md14-43

主题实现

在每个卡片渲染器函数生成卡片时,主题颜色会被应用到卡片元素上。

代码中的主题应用

生成卡片时

  1. 系统根据 theme 参数从 themes 对象中检索请求的主题
  2. 主题颜色会与通过 URL 参数指定的任何自定义颜色合并
  3. 最终的配色方案在渲染过程中应用于 SVG 元素

来源:themes/index.js1-467

主题文档生成

主题系统包含一个自动文档生成器,该生成器会创建所有可用主题的视觉展示。

文档生成过程

来源:scripts/generate-theme-doc.js1-118 scripts/push-theme-readme.sh1-16

文档生成功能

文档生成器执行以下主要功能

  1. themes/index.js 读取所有主题定义
  2. 生成表格,展示每种主题在统计卡片和仓库卡片上的示例
  3. 为每个主题创建实时示例链接
  4. 构建一个全面的 README 文件
  5. 当添加新主题时更新主题文档

生成的主题文档会在主题更新时自动推送到仓库。

来源:scripts/generate-theme-doc.js48-116 scripts/push-theme-readme.sh1-16

贡献新主题

任何人都可以通过以下方式为 GitHub Readme Stats 项目贡献新主题

  1. themes/index.js 添加新的主题定义
  2. 遵循必需的主题结构(title_color、icon_color、text_color、bg_color)
  3. 发起 pull request
  4. 新主题的文档将自动生成

来源:themes/README.md232-234

主题系统组件

组件文件目的
主题定义themes/index.js定义所有可用主题及其颜色属性
主题文档themes/README.md展示所有主题及其示例
文档生成器scripts/generate-theme-doc.js自动生成主题文档
文档更新脚本scripts/push-theme-readme.sh在仓库中更新主题文档

来源:themes/index.js1-467 themes/README.md1-235 scripts/generate-theme-doc.js1-118 scripts/push-theme-readme.sh1-16