Material主题设置⚓︎
约 2963 个字 300 行代码 预计阅读时间 14 分钟
主要来源资料
更改颜色⚓︎
配色方案⚓︎
Material for Mkdocs支持两种配色方案:浅色模式default以及深色模式slate。配色方案在mkdocs.yml中如下设置:
还可以根据用户偏好设置配色方案,该偏好利用媒体查询,方案是将mkdocs.yml中的theme/palette/scheme的值改为preference。
原色⚓︎
原色用于标题、侧边栏、文本链接和其他几个组件。
有效的原色名称有:
redpinkpurpledeep purpleindigobluelight bluecyantealgreenlight greenlime yellowamberorangedeep orangebrowngreyblue greyblackwhite
强调色⚓︎
强调色用于表示可以与之交互的元素,例如悬停链接、按钮和滚动条。
有效的强调色名称有:
redpinkpurpledeep purpleindigobluelight bluecyantealgreenlight greenlimeyellowamberorangedeep orange
调色板切换⚓︎
提供明暗色调的配色方案,让您的文档在一天中的不同时间都能轻松阅读,方便用户做出相应的选择。将以下几行添加到mkdocs.yml:
代码
theme:
  palette:
    - media: "(prefers-color-scheme)"
      toggle:
        icon: material/brightness-auto
        name: Switch to light mode
    - media: "(prefers-color-scheme: light)"
      scheme: default 
      toggle:
        icon: material/brightness-7
        name: Switch to dark mode
    - media: "(prefers-color-scheme: dark)"
      scheme: slate
      toggle:
        icon: material/brightness-4
        name: Switch to system preference
选项⚓︎
此配置将在搜索栏旁边呈现一个调色板切换按钮。请注意,您也可以为每个调色板定义单独的primary设置accent。
此属性用作切换按钮的title属性 (attribute),应设置为可识别的名称以提高可访问性。
通过使用媒体查询,每个调色板都可以与用户系统对明暗外观的偏好设置关联。只需在 mkdocs.yml 中的 scheme 定义旁边添加一个 media 属性即可。
当用户首次访问你的网站时,媒体查询会按照其定义的顺序进行评估。第一个匹配的媒体查询将选择默认调色板。
较新的操作系统允许在白天和夜晚自动切换明暗外观。Material for MkDocs增加了对自动明暗模式的支持,将调色板选择委托给用户的操作系统。
现在,每次操作系统在明暗外观之间切换时,MkDocs的材料都会更改调色板,即使用户没有重新加载网站。
自定义颜色⚓︎
来源资料:
Material for MkDocs使用CSS来实现颜色。如果您想要自定义调色板以外的颜色,可以添加额外的样式表并调整 CSS 变量的值。
首先,将 mkdocs.yml 中的 primary或 accent 值设置为 custom ,以向主题发出信号,表示您想要定义自定义颜色,例如,当您想要覆盖 primary 时:
假设您是 YouTube ,并且想要将主色设置为您品牌的调色板。只需添加:
代码
例如,我的设置如下:
代码
:root {
  --md-primary-fg-color: #000000;
  --md-primary-fg-color--light: #000000;
  --md-primary-fg-color--dark:  #000000;
}
/* docs/stylesheets/extra.css */
[data-md-color-scheme="default"] {
  --md-typeset-a-color: #555555;
  --md-footer-fg-color: #ffffff;
  --md-footer-bg-color: #0d0d0d;
  --md-footer-bg-color--dark: #0d0d0d;
  --md-footer-fg-color--light: #fff;
  --md-footer-fg-color--lighter: #fff;
}
[data-md-color-scheme="slate"] {
  --md-default-bg-color: #151515;
  --md-default-bg-color--light: #151515;
  --md-default-bg-color--lighter: #151515;
  --md-default-bg-color--lightest: #151515;
  --md-default-fg-color: rgb(255, 255, 255);
  --md-default-fg-color--light: rgba(255, 255, 255);
  --md-default-fg-color--lighter: rgb(255, 255, 255,0.8);
  --md-default-fg-color--lightest: rgba(255, 255, 255, 0.6);
  --md-footer-fg-color: #fff;
  --md-footer-bg-color: #0d0d0d;
  --md-footer-bg-color--dark: #0d0d0d;
  --md-footer-fg-color--light: #fff;
  --md-footer-fg-color--lighter: #fff;
  --md-accent-fg-color:  #93d2ce;
  --md-typeset-a-color: #555555;
  background-attachment: fixed;
  background-repeat: no-repeat;
}
更改字体⚓︎
常规字体⚓︎
常规字体用于所有正文、标题以及基本上所有不需要等宽的内容。它可以设置为任何有效的Google 字体。
等宽字体⚓︎
等宽字体用于代码块,可以单独配置。
禁用字体加载⚓︎
如果您想防止从 Google Fonts 加载字体并回退到系统字体:
附加字体⚓︎
来源资料:
如果您想从另一个目标加载(附加)字体或覆盖系统字体,则可以使用附加样式表来添加相应的 @font-face 定义:
然后可以将字体应用于特定元素(例如,仅标题)。
例如,我的设置如下:
代码
更改语言⚓︎
更改徽标和图标⚓︎
配置⚓︎
有两种方法可以指定徽标:它必须是与主题捆绑在一起的任何图标的有效路径,或者指向位于文件夹中的用户提供的图像的有效路径。
网站图标⚓︎
网站图标可以更改为指向用户提供的图像的路径,该图像必须位于docs文件夹中。
设置导航⚓︎
即时加载⚓︎
启用即时加载后,所有内部链接的点击将被拦截并通过 XHR 发送,而无需完全重新加载页面。
该即时加载功能与单页Javascript和目录智能展开功能冲突。
虽然操作平滑,但是如果想要实现更多复杂功能,一般不建议开启。
可以把这一行注释掉或直接删除。
锚点跟踪⚓︎
启用锚点跟踪后,地址栏中的 URL 会自动更新为目录中突出显示的活动锚点。
进度指示器⚓︎
为了在网络速度较慢时提供更好的用户体验,您可以启用进度指示器。它会显示在页面顶部,并在页面完全加载后隐藏。
仅当页面在 400 毫秒后仍未完成加载时,进度指示器才会显示。
粘性导航选项卡⚓︎
启用选项卡后,顶级部分将呈现在上面视口的标题下方的菜单层中,但在移动设备上保持原样。
启用粘性选项卡后,导航选项卡将锁定在标题下方,并且在向下滚动时始终保持可见。
导航部分⚓︎
启用分区后,顶级分区将在上述视口的侧边栏中呈现为组,但在移动设备上保持原样。
不建议开启,因为会导致导航部分过于冗杂。
导航扩展⚓︎
启用扩展后,左侧边栏将默认展开所有可折叠的子部分。
导航修剪⚓︎
启用修剪后,渲染的 HTML 中仅包含可见的导航项, 从而将构建的站点的大小减少 33% 或更多 。
章节索引页⚓︎
启用章节索引页后,可以将文档直接附加到章节,这对于提供概览页特别有用。
请在相应文件夹中创建一个具有该名称的新文档,并将其添加到导航部分的开头:
mkdocs.yml
此功能标志可以与所有其他功能标志结合使用,目录导航集成除外。
目录⚓︎
锚点跟随⚓︎
当启用目录的锚点跟随功能时,侧边栏会自动滚动,以便活动锚点始终可见。
返回顶部按钮⚓︎
当用户向下滚动后再次向上滚动时,可以显示返回顶部按钮。该按钮将呈现在标题下方的正中央。
设置中文搜索⚓︎
内置搜索⚓︎
默认情况下,内置的搜索插件处于启用状态,但当使用其他插件时,必须重新添加。
MkDocs的Material版中文支持由jieba提供。jieba是一个优秀的中文文本分词库。如果安装了 jieba,内置的搜索插件会自动检测中文字符并进行分词。
文本使用零宽度空格字符进行分段,因此在搜索模式中呈现的效果完全相同。调整 mkdocs.yml 以使 separator包含 \u200b 字符:
搜索突出显示⚓︎
启用搜索高亮显示后,当用户点击搜索结果时,Material for MkDocs会在点击链接后高亮显示所有匹配结果。
搜索共享⚓︎
激活搜索共享后,重置按钮旁边会呈现一个共享按钮,用于深度链接到当前搜索查询和结果。
当用户点击分享按钮时,URL 会自动复制到剪贴板。
此页面有帮助吗?⚓︎
每个页面底部可以添加一个简单的反馈小部件,鼓励用户即时反馈页面是否有帮助。
mkdocs.yml
extra:
  analytics: 
    feedback:
      title: Was this page helpful?
      ratings:
        - icon: material/emoticon-happy-outline
          name: This page was helpful
          data: 1
          note: >-
            Thanks for your feedback!
        - icon: material/emoticon-sad-outline
          name: This page could be improved
          data: 0
          note: >- 
            Thanks for your feedback! Help us improve this page by
            using our <a href="..." target="_blank" rel="noopener">feedback form</a>.
设置标题⚓︎
自动隐藏⚓︎
启用自动隐藏后,当用户滚动超过某个阈值时,标头会自动隐藏,从而为内容留出更多空间。
设置页脚⚓︎
导航⚓︎
页脚可以包含当前页面的上一页和下一页的链接。
社交链接⚓︎
所有社交链接都作为项目文档页脚的一部分呈现在版权信息旁边。
mkdocs.yml格式
默认值:无 · 必需 – 此字段必须指向引用与主题捆绑在一起的任何图标的有效图标路径,否则生成将不会成功。
一些流行的选择
fontawesome/brands/behance
fontawesome/brands/docker
fontawesome/brands/github
fontawesome/brands/instagram
fontawesome/brands/linkedin
fontawesome/brands/medium
fontawesome/brands/pied-piper-alt
fontawesome/brands/product-hunt
fontawesome/brands/slack
fontawesome/brands/twitter
必需 – 此字段必须包含有效的相对或绝对 URL,包括 URI 方案。支持所有 URI 方案
版权声明⚓︎
自定义版权横幅可以呈现为页脚的一部分,该页脚显示在社交链接旁边。它可以定义为:
添加Git存储库⚓︎
为了在文档中显示项目存储库的链接,请将 repo_url 设置为存储库的公共 URL,例如
存储库名称⚓︎
存储库图标⚓︎
虽然默认存储库图标是通用的 git 图标,但可以通过引用 中的有效图标路径将其设置为与主题捆绑在一起的任何图标。
编辑按钮⚓︎
如果存储库 URL 指向GitHub、GitLab或Bitbucket存储库,则每个文档的顶部都会显示一个编辑按钮。
修订日期本地化⚓︎
git-revision-date-localized 插件添加了对在每个页面底部添加本地化的上次更新日期的支持。
plugins:
  - git-revision-date-localized:
      enable_creation_date: true
      type: date
      fallback_to_build_date: true
type选项允许更改要显示的日期的格式:
date datetime iso_date iso_datetime timeago
fallback_to_build_date选项指定在 git 存储库不可用时是否应将执行时间用作回退。
添加评论系统⚓︎
Giscus集成⚓︎
在使用 Giscus 之前,需要完成以下步骤:
- 
安装 Giscus GitHub App ,并授予将评论托管为 GitHub 讨论的仓库的访问权限。 
- 
访问 Giscus ,并通过其配置工具生成代码片段以加载评论系统。复制该代码片段以进行下一步操作。生成的代码片段类似于以下内容: 
代码
comments.html部分(默认为空)是添加 Giscus 生成的代码片段的最佳位置。
使用命令覆盖comment.html部分,仍需以下步骤:
- 新建overrides文件夹、partials文件夹、comments.html文件,使得文件呈现如下结构:
- 使用以下代码覆盖comments.html部分:
comments.html
{% if page.meta.comments %}
  <h2 id="__comments">{{ lang.t("meta.comments") }}</h2>
  <!-- Insert generated snippet here -->
  <!-- Synchronize Giscus theme with palette -->
  <script>
    var giscus = document.querySelector("script[src*=giscus]")
    // Set palette on initial load
    var palette = __md_get("__palette")
    if (palette && typeof palette.color === "object") {
      var theme = palette.color.scheme === "slate"
        ? "transparent_dark"
        : "light"
     // Instruct Giscus to set theme
      giscus.setAttribute("data-theme", theme) 
    }
    // Register event handlers after documented loaded
    document.addEventListener("DOMContentLoaded", function() {
      var ref = document.querySelector("[data-md-component=palette]")
      ref.addEventListener("change", function() {
        var palette = __md_get("__palette")
        if (palette && typeof palette.color === "object") {
          var theme = palette.color.scheme === "slate"
            ? "transparent_dark"
            : "light"
          // Instruct Giscus to change theme
          var frame = document.querySelector(".giscus-frame")
          frame.contentWindow.postMessage(
            { giscus: { setConfig: { theme } } },
            "https://giscus.app"
          )
        }
      })
    })
  </script>
{% endif %}
- 将第3行替换为你在上一步中使用 Giscus 配置工具生成的代码片段。如果您从上面复制了该代码片段,则可以通过将comments front matter属性设置为true来在页面上启用评论:
如果您希望为整个文件夹启用评论,您可以使用内置元插件。
元数据⚓︎
元数据扩展是标准 Markdown 库的一部分,它添加了向文档添加前言的功能。
网站优化⚓︎
在某些情况下,你可能希望在所有项目之间共享用户级设置,例如所选调色板或 Cookie 同意。为此,请将以下几行添加到 mkdocs.yml 中:
工作原理
假设您有以下站点结构:
默认情况下,每个站点都有自己的作用域 ( /subsite-a/ 、 /subsite-b/ 、 /subsite-c/ )。要修改此行为,请在 mkdocs.yml 中添加以下几行:
通过将其设置为 / ,它应该允许您在主站点和所有子站点之间共享以下首选项:
- 
Cookie同意
- 
内容标签的链接,即活动标签 
- 
调色板