VitePress 自定义主题
虽然 VitePress 的默认主题功能强大且可配置,但有时你可能需要一个完全独特的设计。VitePress 允许你通过创建一个自定义主题来完全接管站点的 UI。
主题的入口
要使用自定义主题,你需要在 .vitepress 目录下创建一个 theme 目录,并在其中添加一个 index.js 或 index.ts 文件。这个文件是你的自定义主题的入口。
一个最基础的自定义主题配置文件如下:
布局组件 (Layout)
Layout 组件是自定义主题的核心。它是一个 Vue 组件,负责渲染页面的整体结构,包括页头、页脚、侧边栏以及最重要的——Markdown 内容。
-
创建布局文件
在
theme目录下创建一个 Vue 组件,例如MyLayout.vue。 -
编写布局组件
VitePress 提供了一个特殊的
<Content />组件,你必须在你的布局中包含它,它会负责渲染当前页面的 Markdown 内容。 -
在主题中注册布局
现在,在
index.js中导入并使用你的布局组件。
访问页面数据
在你的自定义布局或任何自定义组件中,你可能需要访问当前页面的数据,例如 frontmatter、标题、路径等。VitePress 提供了 useData 这个 composable 函数来实现这一点。
添加样式
你可以通过多种方式为你的自定义主题添加样式:
-
在布局组件中: 直接在
.vue文件中使用<style>标签。 -
导入 CSS 文件: 在你的
theme/index.js中直接导入一个 CSS 文件。
创建自定义主题提供了极高的自由度,但也意味着你需要自己处理更多的细节,如导航、响应式布局等。对于大多数只想做些许调整的用户来说,扩展默认主题(下一章内容)可能是一个更简单高效的选择。