# Markdown渲染Skill ## 适用场景 当前端页面需要渲染Markdown格式的文本内容时使用,适用于: - 日志详情展示 - 文章内容展示 - 备注/说明信息展示 ## 实现方案 使用纯JavaScript实现简单的Markdown渲染,无需引入第三方库。 ### Vue 3 组件实现 ```vue ``` ### 样式规范 #### 管理后台(Element Plus) ```css .markdown-body { font-size: 14px; line-height: 1.8; color: #303133; } .markdown-body h1, .markdown-body h2, .markdown-body h3 { margin: 16px 0 8px; font-weight: 600; line-height: 1.4; } .markdown-body h1 { font-size: 20px; border-bottom: 1px solid #ebeef5; padding-bottom: 8px; } .markdown-body h2 { font-size: 18px; } .markdown-body h3 { font-size: 16px; } .markdown-body ul { margin: 8px 0; padding-left: 24px; } .markdown-body li { margin: 4px 0; } .markdown-body code { background-color: #f5f7fa; padding: 2px 6px; border-radius: 4px; font-family: 'Courier New', Courier, monospace; font-size: 13px; } .markdown-body pre { background-color: #f5f7fa; padding: 12px; border-radius: 6px; overflow-x: auto; margin: 12px 0; } .markdown-body pre code { background-color: transparent; padding: 0; } .empty-content { color: #909399; text-align: center; } ``` #### 移动端(Vant) ```css .markdown-body { font-size: 14px; line-height: 1.8; color: #333; } .markdown-body h1, .markdown-body h2, .markdown-body h3 { margin: 16px 0 8px; font-weight: 600; line-height: 1.4; } .markdown-body h1 { font-size: 18px; border-bottom: 1px solid #ebedf0; padding-bottom: 8px; } .markdown-body h2 { font-size: 16px; } .markdown-body h3 { font-size: 15px; } .markdown-body ul { margin: 8px 0; padding-left: 20px; } .markdown-body li { margin: 4px 0; } .markdown-body code { background-color: #f5f7fa; padding: 2px 6px; border-radius: 4px; font-family: 'Courier New', Courier, monospace; font-size: 13px; } .markdown-body pre { background-color: #f5f7fa; padding: 12px; border-radius: 6px; overflow-x: auto; margin: 12px 0; } .markdown-body pre code { background-color: transparent; padding: 0; } .empty-content { color: #969799; text-align: center; } ``` ## 支持的Markdown语法 | 语法 | Markdown | 渲染结果 | |------|----------|----------| | 一级标题 | `# 标题` | `
代码` |
| 代码块 | ` ```代码块``` ` | `代码块` |
| 无序列表 | `- 列表项` | `` 标签 |
| 普通换行 | 单个换行 | `
` |
## 安全说明
**重要**:渲染前必须转义HTML特殊字符(`&`, `<`, `>`),防止XSS攻击。
```javascript
// 必须首先执行
content = content
.replace(/&/g, '&')
.replace(//g, '>')
```
## 使用示例
### 日志详情弹窗
```vue