博客支持增强的 Markdown 链接功能,可以自动识别外部链接并添加对应的网站图标。
内部链接:返回首页 - 不会添加外部链接标记
外部链接:GitHub、Bilibili、知乎 - 自动添加图标和外部链接标记
系统会根据链接的域名自动匹配对应的图标:
你可以通过 {icon="图标名"} 语法来自定义链接图标:
外部链接会自动添加以下特性:
target="_blank" 和 rel="noopener noreferrer"示例:访问 Astro 官网
你可以在 src/plugins/prose-link-utils.mjs 文件中添加更多的域名图标映射:
const mainDomainIcons = {
// 已有图标...
'your-domain.com': 'icon-prefix:icon-name',
// 添加更多...
};
支持常见技术栈和平台的图标自动识别:
这是一个提示(Note)。
这是一个建议(Tip)。
这是一个警告(Warning)。
这是一个重要信息(Important)。
这是一个注意事项(Caution)。
Badge 组件支持多种样式,可以显示文本、图片,并支持自动获取外部站点图标和 GitHub 头像。
普通带链接:普通带链接
纯文本指定圆形:纯文本指定圆形
纯文本指定方形:纯文本指定方形
带个图:带个图
外部域名自动获取站点图标 纸鹿,
古怪杂记本,
GitHub 链接能自动识别头像
KazariEX,
也可指定方形
isYangs/GioPic。
BlogHeader 组件用于展示博客头部信息,支持 Logo、标题、副标题、背景 Emoji 动画等效果。鼠标悬浮时会触发字符动画。
完整版(带所有属性):
仅 Logo:
无 Emoji 动画:
自定义 Emoji:
BlogHeader 组件支持以下属性:
| 属性 | 说明 | 默认值 |
|---|---|---|
logo | Logo 图片 URL | - |
title | 博客标题 | - |
subtitle | 博客副标题 | - |
link | 点击跳转链接 | - |
emoji | 背景 Emoji 动画,逗号分隔 | - |
showTitle | 是否显示标题文字 | true |
鼠标悬浮时的动画 Emoji 对应标题的汉字,每个字符都有独立的动画延迟,营造出波浪般的视觉效果。
// 普通代码块
console.log('Hello, World!');
// 带文件名的代码块
function greet(name) {
return `Hello, ${name}!`;
}
Chat 组件用于展示对话式的聊天内容,支持多种消息类型,模拟即时通讯软件的界面效果。
使用 :::chat 包裹对话内容,通过特定的语法标记不同类型的消息:
((时间)) - 系统时间消息(居中显示)((.)) - 自己发送的消息(右对齐,高亮背景)((.名字)) - 带发送者名字的自己的消息((系统消息)) - 系统通知(居中灰色显示,以特定关键词开头如”系统”)((名字)) - 他人发送的消息(左对齐,默认背景)也许
我们可以聊聊天
我还可以有名字
有趣
我学到了。
:::chat
((2024-11-09 23:39:30)) <- 系统时间,居中显示
((.)) <- 自己的消息,右对齐
消息内容
((.纸鹿)) <- 带名字的自己的消息
消息内容
((系统通知)) <- 系统消息,居中灰色
((对方名字)) <- 他人消息,左对齐
消息内容
:::
\ 进行手动换行Key 组件用于展示键盘按键,支持单独按键、组合键和 macOS 风格图标显示。
纯 Code:Esc F2 Ctrl KeyA Space Tab Enter
指定修饰符、图标、文本(macOS 自动使用图标):
↑ ⌥ ⇧ ␣ ⌫ ↵
多修饰符组合:Ctrl+Shift+KeyA Shift+Alt ⌘/Ctrl+KeyS
常用快捷键:
Key 组件支持以下属性:
| 属性 | 说明 | 示例 |
|---|---|---|
code | 按键代码,参考 KeyboardEvent.key | code="Enter" |
text | 自定义显示文本 | text="自定义" |
icon | 使用 macOS 风格图标 | icon |
ctrl | 显示 Ctrl 修饰符 | ctrl |
shift | 显示 Shift 修饰符 | shift |
alt | 显示 Alt 修饰符 | alt |
meta | 显示 Meta (Cmd/Win) 修饰符 | meta |
cmd | 智能适配:Windows 显示 Ctrl,macOS 显示 Cmd | cmd |
<!-- 单个按键 -->
:key[Esc]{code="Escape"}
<!-- 带图标的按键 -->
:key[↵]{code="Enter" icon}
<!-- 组合键 -->
:key{ctrl shift code="KeyA"}
<!-- 智能适配 cmd -->
:key{cmd code="KeyS"}
LinkCard 组件用于展示简洁的链接卡片,左侧显示标题和描述,右侧显示图标。适用于文章内嵌链接、友情链接等场景。
完整版(带所有属性):
简洁版(自动识别图标):
自定义描述:
LinkCard 组件支持以下属性:
| 属性 | 说明 | 必需 |
|---|---|---|
title | 卡片标题 | 是 |
link | 跳转链接 | 是 |
description | 描述文本,不提供时自动使用链接域名 | 否 |
icon | 自定义图标 URL,不提供时自动识别域名图标 | 否 |
LinkCard 组件会根据链接的域名自动匹配对应的图标:
外部链接会自动添加以下特性:
target="_blank" 和 rel="noopener noreferrer"<!-- 完整用法 -->
::link-card{title="标题" description="描述" link="链接URL" icon="图标URL"}
<!-- 简洁用法(自动提取域名和图标) -->
::link-card{title="标题" link="链接URL"}
<!-- 自定义描述,自动图标 -->
::link-card{title="标题" description="自定义描述" link="链接URL"}
<!-- 自定义图标 -->
::link-card{title="标题" link="链接URL" icon="https://example.com/favicon.ico"}
LinkCard 组件支持响应式设计:
Pic 组件用于展示图片,支持说明文字、点击缩放效果。适用于文章内展示图片并添加描述说明。
完整版(带所有属性):
仅必需属性:
带说明文字:
禁用缩放效果:
指定尺寸:
Pic 组件支持以下属性:
| 属性 | 说明 | 必需 |
|---|---|---|
src | 图片 URL | 是 |
alt | 图片替代文本 | 否 |
caption | 图片说明文字,显示在图片下方 | 否 |
width | 图片宽度 | 否 |
height | 图片高度 | 否 |
zoom | 是否启用点击缩放效果,默认为 true | 否 |
zoom="false" 禁用)caption 属性添加图片说明,显示在图片下方居中位置<!-- 完整用法 -->
::pic{src="图片URL" caption="说明文字" alt="替代文本" width="600"}
<!-- 简洁用法(仅图片) -->
::pic{src="图片URL"}
<!-- 带说明文字 -->
::pic{src="图片URL" caption="图片说明"}
<!-- 禁用缩放 -->
::pic{src="图片URL" zoom="false"}
<!-- 指定尺寸 -->
::pic{src="图片URL" width="400" height="300"}
Pic 组件支持响应式设计:
LinkBanner 组件用于展示带有背景图片的链接卡片,适用于展示外部网站、文章推荐等场景。组件会自动提取链接域名作为默认描述。
完整版(带所有属性):
仅必需属性(描述自动显示为域名):
无背景图片:
LinkBanner 组件支持以下属性:
| 属性 | 说明 | 必需 |
|---|---|---|
title | 横幅标题 | 是 |
link | 跳转链接 | 是 |
banner | 背景图片 URL | 否 |
description | 描述文本,不提供时自动使用链接域名 | 否 |
外部链接会自动添加以下特性:
target="_blank" 和 rel="noopener noreferrer"示例:
<!-- 完整用法 -->
::link-banner{banner="图片URL" title="标题" description="描述" link="链接URL"}
<!-- 简洁用法(自动提取域名) -->
::link-banner{banner="图片URL" title="标题" link="链接URL"}
<!-- 无背景图片 -->
::link-banner{title="标题" description="描述" link="链接URL"}
LinkBanner 组件支持响应式设计:
Poetry 组件用于展示诗词内容,支持标题、作者和落款,整体居中显示,适合展示古诗词或现代诗歌。
完整版(带所有属性):
仅标题和内容:
带作者和落款:
Poetry 组件支持以下属性:
| 属性 | 说明 | 必需 |
|---|---|---|
title | 诗词标题 | 否 |
author | 作者名称 | 否 |
footer | 落款/备注 | 否 |
<!-- 完整用法 -->
:::poetry{title="诗词标题" author="作者名" footer="落款"}
诗词内容,
可以有多行。
:::
<!-- 仅标题 -->
:::poetry{title="无题"}
内容...
:::
<!-- 仅内容 -->
:::poetry
纯内容,
无标题作者。
:::
Poetry 组件支持响应式设计:
Tab 组件用于在文章中创建可切换的选项卡,支持展示不同的内容块,非常适合用于展示代码对比、多语言示例等场景。
简单 Tab:
# 一个简单的 Tab带高级属性的 Tab(居中 + 默认显示第二个):
是这样。Tab 组件支持以下属性:
| 属性 | 说明 | 必需 |
|---|---|---|
tabs | Tab 标签数组,JSON 格式字符串 | 是 |
center | 是否居中显示,默认为 false | 否 |
active | 默认激活的 Tab 索引(从1开始),默认为 1 | 否 |
<!-- 简单用法 -->
:::tab{tabs="Tab1,Tab2"}
#tab1
第一个 Tab 的内容
#tab2
第二个 Tab 的内容
:::
<!-- 高级用法(使用多个属性) -->
:::tab{tabs="标签1,标签2,标签3" center="true" active="2"}
#tab1
第一个标签的内容
#tab2
第二个标签的内容
#tab3
第三个标签的内容
:::
#tab1、#tab2 等标记来分隔不同 Tab 的内容Tab 组件支持响应式设计:
Timeline 组件用于展示时间线内容,支持时间标记和内容主体,适合记录事件、日志、历程等场景。
完整示例:
看到了小兔
是小鹿
是你。
多内容示例:
一件事
两件事。
再添一笔。
:::timeline
{时间标记}
时间线内容,支持 Markdown 语法
{下一个时间标记}
下一条内容
:::
{时间文本} 格式作为时间线的时间点标记{时间标记} 后的内容会作为该时间点的内容主体Timeline 组件支持响应式设计:
正在加载评论...