VitePress 宽布局配置
适用场景
当页面需要展示大量数据、图表或表格时,默认的 688px 内容宽度可能不够用。通过宽布局配置,可以让特定页面充分利用屏幕空间。
快速使用
在需要宽布局的 Markdown 文件的 frontmatter 中添加 pageClass:
---
title: 页面标题
pageClass: wide-page
---
# 页面内容保存后刷新页面,内容区域会自动变宽。
实现原理
1. VitePress 的布局结构
VitePress 的页面布局是多层嵌套的:
.Layout (外层容器)
└── .VPDoc (文档容器)
└── .content-container (内容容器)
└── .vp-doc (文档内容,默认 max-width: 688px)2. pageClass 的作用
在 frontmatter 中设置 pageClass: wide-page 后,VitePress 会将这个类名添加到 .Layout 元素上:
<div class="Layout wide-page">
<!-- 页面内容 -->
</div>3. CSS 实现
在 docs/.vitepress/theme/custom.css 中添加以下样式:
/* 只让带 wide-page 类的页面变宽 */
/* 1. 设置全局布局最大宽度(核心) */
.Layout.wide-page {
--vp-layout-max-width: 90vw; /* 使用屏幕宽度的 90%,左右各留 5% 空白 */
}
/* 2. 解除内容容器宽度限制(必需) */
.Layout.wide-page .VPDoc .content-container {
max-width: 100% !important;
}为什么只需要两个 CSS 规则?
- CSS 变量控制全局宽度:VitePress 内部通过
--vp-layout-max-width控制多个层级的宽度 - 解除容器限制:
.content-container默认有max-width限制,需要设置为 100% 让它跟随父容器
这两条规则适用于所有情况,无论页面是否有大纲(outline)。
宽度选项
根据需求选择不同的宽度设置:
选项 1:使用视口宽度百分比(推荐)
.Layout.wide-page {
--vp-layout-max-width: 90vw; /* 屏幕宽度的 90% */
}效果: 左右各留 5% 空白,大屏幕上视觉效果更好
选项 2:完全移除限制
.Layout.wide-page {
--vp-layout-max-width: none;
}效果: 内容会尽可能撑满可用空间
选项 3:固定最大宽度
.Layout.wide-page {
--vp-layout-max-width: 1400px;
}效果: 在超大屏幕上不会过宽,保持可读性
选项 4:动态计算
.Layout.wide-page {
--vp-layout-max-width: calc(100vw - 100px); /* 屏幕宽度减去固定边距 */
}效果: 灵活控制左右边距
响应式优化
为移动端添加特殊处理:
/* 移动端保持默认宽度 */
@media (max-width: 768px) {
.Layout.wide-page {
--vp-layout-max-width: 100%;
}
}使用示例
示例 1:数据表格页面
---
title: 数据统计
pageClass: wide-page
---
# 数据统计
<table>
<!-- 宽表格内容 -->
</table>示例 2:图表展示页面
---
title: 体重记录
pageClass: wide-page
---
# 体重记录
<div class="chart-container">
<!-- 图表组件 -->
</div>常见问题
为什么设置后没有生效?
可能原因:
CSS 文件未正确引入
检查
docs/.vitepress/theme/index.js:jsimport DefaultTheme from 'vitepress/theme' import './custom.css' // 确保引入了 custom.css export default DefaultTheme选择器不正确
确保使用
.Layout.wide-page而不是.wide-page缺少必要的 CSS 规则
必须同时设置 CSS 变量和容器宽度:
css.Layout.wide-page { --vp-layout-max-width: 90vw; } .Layout.wide-page .VPDoc .content-container { max-width: 100% !important; }浏览器缓存
清除缓存或强制刷新(Ctrl+Shift+R / Cmd+Shift+R)
需要设置 .vp-doc 的 max-width 吗?
不需要!
VitePress 内部通过 CSS 变量 --vp-layout-max-width 控制布局宽度,.vp-doc 会自动响应这个变量,无需单独设置。
关键是要设置 .content-container 的 max-width: 100%,让它跟随父容器的宽度。
如何让所有页面都变宽?
如果想让所有页面都使用宽布局,直接在 :root 设置即可:
:root {
--vp-layout-max-width: 90vw;
}
.VPDoc .content-container {
max-width: 100% !important;
}不需要使用 pageClass。
如何自定义其他页面类?
可以定义多个不同的页面类:
/* 超宽布局 */
.Layout.extra-wide {
--vp-layout-max-width: 95vw;
}
.Layout.extra-wide .VPDoc .content-container {
max-width: 100% !important;
}
/* 中等宽度 */
.Layout.medium-wide {
--vp-layout-max-width: 1000px;
}
.Layout.medium-wide .VPDoc .content-container {
max-width: 100% !important;
}使用时:
pageClass: extra-wide