Markdown 渲染测试页
把本站支持的 Markdown 语法一次性铺开:标题、行内标记、五种 callout、代码块、表格、任务清单、脚注、大图折叠。用来在四档背景之间横向比对排版效果,不是内容文章。
注意
这是一篇测试页,不是内容文章。 它存在的唯一目的是把所有排版元素摆在同一页上, 好在切换背景档位时逐项比对。
⚠ 它的 draft 是 false——只有这样才生成页面([...slug].astro 在
getStaticPaths 里就把草稿过滤掉了,设成 true 连 dev 都打不开)。
代价是它会进文章列表、sitemap、RSS、搜索索引和分类/标签计数。
正式发布前请把 draft 改回 true,或者直接删掉这个文件。
一、标题层级
下面那个一级标题是正文里的 #,和页面顶部由 frontmatter 渲染的标题是两个东西。
平时写文章不该用它(一页只该有一个 h1),这里只为看它的样式。
H1 正文里的一级标题
H2 二级标题 Heading Level 2
H3 三级标题 Heading Level 3
H4 四级标题 Heading Level 4
H5 五级标题 Heading Level 5
H6 六级标题 Heading Level 6
二、行内标记
这一段用来看加粗、斜体、粗斜体、删除线、行内代码、高亮
以及它们混排时的基线是否齐整。中英混排:this is bold English 和中文加粗混在一起。
注意本站的一条书写约定:加粗的 ** 不能紧贴中文标点,否则会原样输出。
所以是「这样,对的」而不是「**这样,**错的」。
链接有四种写法,样式应当一致:行内链接、 带 title 的链接、引用式链接、 以及裸地址 https://github.github.com/gfm/。
还有几个 HTML 行内元素:按 Ctrl + Shift + R 硬刷新; 化学式 H2O;数学幂 216 = 65536;CSS 带虚线下划线。
转义字符也测一下:*不是斜体*、_不是下划线_、`不是代码`、反斜杠 \ 本身。
三、五种 callout
备注
一般提示。正文里可以放加粗、代码和链接,
也可以换行——这一行就是第二行。
提示
建议性内容。这五种的语义色不压成一色:它们在传递信息,拉平就把信息弄丢了。
重要
关键信息。这一条故意写得长一点,好看它在窄屏下换行之后左边的对齐还在不在: 决定评论区活跃度的从来不是你用了哪个后端,而是读者能不能不注册就留言。
警告
警告。里面塞一段代码块,看嵌套之后的内边距对不对:
rm -rf .astro node_modules/.astro注意
危险操作。里面塞一个列表:
一、先部署资源
二、确认目标地址返回 200
三、再洗库
四、引用块
单层引用。引用块和 callout 共用「左边一道线 + 右侧圆角」的形状,但材质要能分辨。
里面也可以有加粗、
代码和列表:
第一项
第二项
嵌套引用。第二层应当能看出层级,而不是和第一层糊在一起。
五、列表
无序列表,含两级嵌套:
- 第一项
- 第二项
- 嵌套 A
- 嵌套 B
- 第三层
- 第三项,这一项写得长一些,用来看换行之后的悬挂缩进对不对齐:文本应该和上一行的 文字左边对齐,而不是回到项目符号那里。
有序列表:
- 第一步
- 第二步
- 子步骤 2.1
- 子步骤 2.2
- 第三步
任务清单:
- 已完成的一项
- 另一项已完成
- 未完成的一项
- 未完成,且带加粗和
代码
本站平时更偏好顿号编号而不是项目符号(项目符号一眼 AI 味)。它的写法有个硬要求 ——编号之间必须留空行,连写会塌成一段:
一、第一条。
二、第二条。
三、第三条。
六、代码
行内代码:npm run build、--surface-radius、getStaticPaths()。
带语言标签的代码块(应当有语言角标和复制按钮):
/** 表情在提交那一刻就被换成 <img> 存进库,不是渲染时查表。 */
export function emojiToImg(text: string): string {
return text.replace(/:(.+?):/g, (raw, name) => {
const src = EMOJI_MAP[name];
return src ? `<img class="wl-emoji" src="${src}" alt="${name}">` : raw;
});
}/* 材质契约:组件读令牌,档位填令牌 */
:is(.site-card, .site-pill, .site-panel, .site-edge) {
border-radius: var(--surface-radius);
outline: var(--surface-edge-w) solid var(--glass-edge);
outline-offset: calc(-1 * var(--surface-edge-w));
}ssh -i ~/.ssh/id_ed25519 -p 8443 root@example.com "systemctl status waline"不带语言的代码块:
这一块没有语言标注,
角标应当留空或隐藏,而不是显示 "undefined"。超长单行,用来测横向滚动条(不应该把整页撑宽):
const veryLongLine = { alpha: 1, bravo: 2, charlie: 3, delta: 4, echo: 5, foxtrot: 6, golf: 7, hotel: 8, india: 9, juliett: 10, kilo: 11, lima: 12, mike: 13 };七、表格
普通表格:
| 方案 | 数据在谁那儿 | 读者成本 | 活跃度 |
|---|---|---|---|
| giscus | GitHub Discussions | 要 GitHub 账号 | 活跃 |
| Waline | 自己的库 | 可匿名 | 活跃 |
| Artalk | 自己的库 | 可匿名 | 缓慢 |
| Disqus | 第三方 | 要账号 + 广告 | 活跃 |
三种对齐(左 / 居中 / 右):
| 左对齐 | 居中 | 右对齐 |
|---|---|---|
| 文本 | 文本 | 123 |
| 长一点的文本 | 中 | 45678 |
| 短 | 居中的长文本 | 9 |
宽表格,用来测 rehypeTableScroll 的横向滚动容器(应当表格自己滚,页面不动):
| 令牌 | 极光 | 天光 | 纸墨 | 极简 | 浮岛 | 说明 |
|---|---|---|---|---|---|---|
--surface-radius | 18px | 18px | 6px | 6px | 10px | 卡片圆角 |
--surface-edge-w | 0 | 0 | 1px | 1px | 2px | 描边宽度 |
--surface-sheen | 四层玻璃高光 | 四层玻璃高光 | none | none | 4px 硬投影 | ::before 那层 |
--surface-lift | —— | —— | 耳语级暖影 | 耳语级暖影 | 6px 硬投影 | 悬停与浮层 |
八、分隔线
上面一段。
下面一段。分隔线两侧的间距应当对称。
九、图片
行内图片(在句子中间,不应该被折叠):这是一张小图 就在文字里。
下面这张独占一段、且路径以 /diary/ 开头,应当被 rehypePhotoFold 改写成可折叠面板,
并且在展开之前一个字节都不加载:
2026 年 7 月 30 日的傍晚
十、脚注
这句话带一个脚注1,这句话带另一个2。脚注区应当出现在文章最末尾, 并且有回跳箭头。
十一、杂项
连续的中文标点:《书名号》、「引号」、【方括号】、(圆括号)、破折号——以及省略号……
Emoji:🎨 🔍 📌 ⚠️ ✅ ❌ 🚀
一段长中文,用来看行高和字距在这一档下读起来累不累:这个博客基于 Astro 构建,静态输出、 默认零 JS,只有交互组件以 React 孤岛形式加载。写代码之外,我也花很多时间琢磨一些「非技术」 的问题——人生意义、认知提升与独立思考,如何过上美好生活、对抗虚无。慢慢形成自己的思考, 顺带给「财富自由」之类被神化的概念祛魅。

评论
评论加载中……