菜单

主题与用户界面

相关源文件

本文详细介绍了 CS 自学指南网站的主题配置和用户界面元素。它重点关注 Material for MkDocs 主题的定制、配色方案、排版设置以及评论系统等交互组件。有关构建过程和依赖项的信息,请参阅构建过程和依赖项

Material 主题概述

CS 自学指南使用 Material for MkDocs 主题,提供了一个现代、响应式界面,具有暗模式、搜索功能和代码高亮等高级功能。该主题经过定制,以在整个知识库中创建一致、用户友好的体验。

图表:主题组件关系

来源:mkdocs.yml12-53

主题配置

CS 自学指南中的主题配置在 mkdocs.yml 文件中定义,包含几个关键组件

基本设置

该网站配置以中文为默认语言,并通过 i18n 插件单独构建英文版本。

theme:
  name: material
  language: zh
  static_templates:
    - 404.html
  favicon: images/favicon.ico
  apple-touch-icon-precomposed: images/mobile_icon.png

来源:mkdocs.yml12-18

功能配置

Material 主题提供了许多在 CS 自学指南中启用的 UI 功能

功能目的
header.autohide向下滚动时隐藏页眉
navigation.tracking根据滚动位置更新导航
navigation.top添加“返回顶部”按钮
search.highlight在搜索结果中高亮搜索词
search.share允许分享搜索结果
search.suggest显示搜索建议
content.code.annotate启用代码注释

来源:mkdocs.yml22-29

配色方案和暗模式

该网站实现了响应式配色方案,可根据用户偏好调整,提供亮模式和暗模式选项

图表:主题配色方案系统

来源:mkdocs.yml31-45

排版和图标

该网站为文本和代码内容使用了精心选择的字体

  • 文本:Roboto Slab
  • 代码:Roboto Mono
  • 仓库图标:来自 FontAwesome 的 GitHub 标志

来源:mkdocs.yml47-51

自定义覆盖

该网站通过指定自定义目录进行覆盖,扩展了 Material 主题

theme:
  custom_dir: overrides

这允许网站使用自定义实现(例如评论系统)定制默认 Material 主题模板。

来源:mkdocs.yml53

Markdown 扩展

该网站使用了几个 Markdown 扩展,以增强用户界面和内容呈现

扩展目的
attr_list允许向 Markdown 元素添加 HTML 属性
md_in_html在 HTML 块内启用 Markdown 语法
footnotes添加对脚注的支持

来源:mkdocs.yml55-58

评论系统集成

CS 自学指南使用 Giscus 实现了评论系统,该系统利用 GitHub Discussions 为每个页面提供协作评论体验。

图表:Giscus 评论系统流程

来源:overrides/partials/comments.html1-52

Giscus 配置

Giscus 评论系统通过以下关键参数实现

  • 仓库:PKUFlyingPig/cs-self-learning
  • 映射:基于页面标题
  • 主题:与网站配色方案同步
  • 语言:中文 (zh-CN)
  • 位置:评论输入框在顶部

当用户在亮模式和暗模式之间切换时,评论系统的主题通过 JavaScript 自动同步。

来源:overrides/partials/comments.html2-16

主题同步

一个 JavaScript 事件监听器监控网站调色板的变化并相应地更新 Giscus 主题

// Set palette on initial load
var palette = __md_get("__palette")
if (palette && typeof palette.color === "object") {
    var theme = palette.color.scheme === "slate"
    ? "dark_protanopia"
    : "light_protanopia"

    // Instruct Giscus to set theme
    giscus.setAttribute("data-theme", theme) 
}

系统对亮主题使用“light_protanopia”,对暗主题使用“dark_protanopia”,确保色觉缺陷用户的可访问性。

来源:overrides/partials/comments.html19-51

国际化 UI 元素

尽管 i18n 系统在国际化系统中有所介绍,但用户界面包含特定语言的元素

  • 默认网站语言设置为中文
  • 搜索插件配置为支持中文和英文
  • 用户界面文本(导航项、按钮等)在不同语言之间进行翻译

来源:mkdocs.yml14 mkdocs.yml118-121 mkdocs.yml60-117

移动响应性

Material 主题提供了内置的响应式设计元素,可适应不同的屏幕尺寸和设备。CS 自学指南通过其主题配置保持了这种响应性,确保在桌面和移动设备上提供一致的体验。

来源:mkdocs.yml12-53