













主要目标:1. 代码块支持显示所属文件,并显示文件类型图标 ;2. 将默认代码块样式修改为 mac风格

vitepress-plugin-group-icons VitePress 官方也在用的代码块插件,直接实现我们的第1个小目标
sh
pnpm add vitepress-plugin-group-icons配置 config,并导入主题配置中
.vitepress/config/index.ts.vitepress/theme/index.ts
ts
import { defineConfig } from 'vitepress'
import { groupIconMdPlugin, groupIconVitePlugin } from 'vitepress-plugin-group-icons'
export default defineConfig({
markdown: {
config(md) {
md.use(groupIconMdPlugin)
}
},
vite: {
plugins: [groupIconVitePlugin()]
}
})ts
import Theme from 'vitepress/theme'
import 'virtual:group-icons.css'
export default Theme新建 code.css 文件并导入主题配置中。 部分使用的变量参见 我的 Tailwind 变量配置
.vitepress/theme/style/code.css.vitepress/theme/index.ts
css
/* mac 窗口小圆点颜色 */
.vp-doc {
div[class*='language-'],
.vp-code-group,
.vp-code-block-title {
--code-red: var(--mac-window-red);
--code-yellow: var(--mac-window-yellow);
--code-green: var(--mac-window-green);
}
}
/* 代码code:修改背景色 */
.vp-doc :not(pre) > code {
@apply bg-main/10;
}
/* 代码块 */
.vp-doc *:not(.vp-code-block-title):not(.blocks) > div[class*='language-'],
.vp-doc .vp-code-block-title .vp-code-block-title-bar {
@apply pt-5;
/* 代码块:添加macOS风格的圆点 */
&::before {
@apply absolute top-3 left-3 z-1 block h-3 w-3 rounded-full;
content: '';
background-color: var(--code-red);
box-shadow:
20px 0 0 var(--code-yellow),
40px 0 0 var(--code-green);
}
/* 代码块:下移行号 隐藏右侧竖线 */
.line-numbers-wrapper {
@apply border-r-0 pt-10;
/* 代码块:重建行号右侧竖线 */
&::after {
@apply absolute top-10 right-0 h-[calc(100%-60px)] border-r border-(--vp-code-block-divider-color);
content: '';
}
}
}
/* 适配多文件代码块 */
.vp-doc {
.vp-code-group {
.tabs {
@apply pt-5;
&::before {
@apply absolute top-3 left-3 h-3 w-3 rounded-full;
content: '';
background: var(--code-red);
box-shadow:
20px 0 var(--code-yellow),
40px 0 var(--code-green);
}
}
div[class*='language-'] {
@apply pt-0 shadow-none;
&::before {
@apply hidden;
}
.line-numbers-wrapper {
@apply pt-5;
&::after {
@apply top-5 h-[calc(100%-40px)];
}
}
}
}
}ts
import './style/code.css'此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。