243 words
1 minute
Fuwari 给代码块添加标题栏
效果
```markdown title=src/example.mdexample```NOTE向上面这样在语言后面加上
title=文件名,即可在代码块上方显示文件名。
教程
- 在
src/plugins/expressive-code文件夹下创建file-title.ts文件
import { definePlugin } from "@expressive-code/core";
export function pluginFileTitle() { return definePlugin({ name: "File Title", hooks: { preprocessMetadata: ({ codeBlock }) => { const meta = codeBlock.meta; if (!meta) return;
const fileMatch = meta.match(/title=([^\s]+)/); if (fileMatch) { codeBlock.props.title = fileMatch[1]; codeBlock.meta = meta.replace(fileMatch[0], "").trim(); } }, }, });}- 在
src/styles/expressive-code.css中添加样式
/* File title styles */.frame.has-title:not(.is-terminal) { .header { @apply flex items-center; padding: 0.5rem 1rem !important; background: var(--codeblock-topbar-bg); border-bottom: 1px solid oklch(0.25 0.02 var(--hue)) !important; min-height: 2.5rem; height: 2.75rem !important; }
.title { @apply text-sm font-medium; color: oklch(0.75 0.05 var(--hue)) !important; padding-right: 1rem !important; padding-top: 0.1rem !important; }
[data-language]::before { position: absolute !important; top: 0.75rem !important; right: 0.5rem !important; margin: 0; opacity: 1 !important; z-index: 10; pointer-events: none; }}- 在
astro.config.mjs中导入插件
import { pluginFileTitle } from "./src/plugins/expressive-code/file-title.ts";
export default defineConfig({ // ... integrations: [ // ... expressiveCode({ plugins: [ // ... pluginFileTitle(), ], }), ],}); Fuwari 给代码块添加标题栏
https://astronaut.github.io/posts/how-to-add-code-block-title/