Material主题设置⚓︎
约 2963 个字 300 行代码 预计阅读时间 14 分钟
主要来源资料
更改颜色⚓︎
配色方案⚓︎
Material for Mkdocs
支持两种配色方案:浅色模式default
以及深色模式slate
。配色方案在mkdocs.yml
中如下设置:
还可以根据用户偏好设置配色方案,该偏好利用媒体查询,方案是将mkdocs.yml
中的theme/palette/scheme
的值改为preference
。
原色⚓︎
原色用于标题、侧边栏、文本链接和其他几个组件。
有效的原色名称有:
red
pink
purple
deep purple
indigo
blue
light blue
cyan
teal
green
light green
lime yellow
amber
orange
deep orange
brown
grey
blue grey
black
white
强调色⚓︎
强调色用于表示可以与之交互的元素,例如悬停链接、按钮和滚动条。
有效的强调色名称有:
red
pink
purple
deep purple
indigo
blue
light blue
cyan
teal
green
light green
lime
yellow
amber
orange
deep 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
同意 -
内容标签的链接,即活动标签
-
调色板