chore: 移除本地 blog 目录,准备替换为 Git Submodule
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
@@ -1,88 +0,0 @@
|
|||||||
---
|
|
||||||
title: 'NovaBlog 入门指南'
|
|
||||||
description: '这是一篇介绍 NovaBlog 博客系统核心功能的示例文章,展示 MDX 动态组件支持。'
|
|
||||||
pubDate: 2026-02-28
|
|
||||||
author: 'NovaBlog Team'
|
|
||||||
category: '教程'
|
|
||||||
tags: ['入门', 'MDX', 'Astro']
|
|
||||||
heroImage: '/images/hello-world.jpg'
|
|
||||||
---
|
|
||||||
|
|
||||||
# 欢迎来到 NovaBlog
|
|
||||||
|
|
||||||
NovaBlog 是一个极简、高效的程序员博客系统,采用 **静态渲染 + 轻量级微服务** 架构。
|
|
||||||
|
|
||||||
## 核心特性
|
|
||||||
|
|
||||||
### 🚀 极致性能
|
|
||||||
|
|
||||||
基于 Astro 的 Islands Architecture(群岛架构),大部分页面为 Zero-JS,仅在需要交互的地方加载 JavaScript。
|
|
||||||
|
|
||||||
### ✍️ MDX 支持
|
|
||||||
|
|
||||||
在 Markdown 中直接嵌入交互组件:
|
|
||||||
|
|
||||||
```jsx
|
|
||||||
<Counter client:visible />
|
|
||||||
```
|
|
||||||
|
|
||||||
上面的组件会在可见时自动加载并挂载 JavaScript。
|
|
||||||
|
|
||||||
### 📐 数学公式排版
|
|
||||||
|
|
||||||
支持复杂的数学公式渲染:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ integral_0^infinity e^(-x^2) dif x = sqrt(pi) / 2 $
|
|
||||||
```
|
|
||||||
|
|
||||||
## 代码高亮
|
|
||||||
|
|
||||||
支持多种编程语言的语法高亮:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
// TypeScript 示例
|
|
||||||
interface Post {
|
|
||||||
title: string;
|
|
||||||
content: string;
|
|
||||||
tags: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getPosts(): Promise<Post[]> {
|
|
||||||
return await fetch('/api/posts').then(res => res.json());
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
// Go 示例
|
|
||||||
package main
|
|
||||||
|
|
||||||
import "fmt"
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
fmt.Println("Hello, NovaBlog!")
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## 表格支持
|
|
||||||
|
|
||||||
| 特性 | 描述 |
|
|
||||||
|------|------|
|
|
||||||
| 静态渲染 | 构建时生成 HTML,极速加载 |
|
|
||||||
| MDX 支持 | 在 Markdown 中嵌入组件 |
|
|
||||||
| 低资源 | 2C1G 即可运行 |
|
|
||||||
| Docker | 一键容器化部署 |
|
|
||||||
|
|
||||||
## 引用
|
|
||||||
|
|
||||||
> 优秀的博客系统应该让作者专注于内容,而非配置。
|
|
||||||
>
|
|
||||||
> — NovaBlog 设计理念
|
|
||||||
|
|
||||||
## 下一步
|
|
||||||
|
|
||||||
1. 在 `src/content/blog/` 目录下创建新的 `.md` 或 `.mdx` 文件
|
|
||||||
2. 配置 Frontmatter 元数据
|
|
||||||
3. 运行 `npm run dev` 预览效果
|
|
||||||
|
|
||||||
开始你的写作之旅吧! 🎉
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
---
|
|
||||||
title: 'LaTeX 公式渲染测试'
|
|
||||||
description: '测试 LaTeX 数学公式渲染功能'
|
|
||||||
pubDate: 2026-03-01
|
|
||||||
author: 'NovaBlog Team'
|
|
||||||
category: '测试'
|
|
||||||
tags: ['测试', 'LaTeX', '数学']
|
|
||||||
---
|
|
||||||
|
|
||||||
import MathFlipCard from '../../components/react/MathFlipCard';
|
|
||||||
|
|
||||||
# LaTeX 公式渲染测试
|
|
||||||
|
|
||||||
## 行内公式
|
|
||||||
|
|
||||||
这是一个行内公式:$E = mc^2$,爱因斯坦的质能方程。
|
|
||||||
|
|
||||||
勾股定理:$a^2 + b^2 = c^2$
|
|
||||||
|
|
||||||
## 块级公式
|
|
||||||
|
|
||||||
高斯积分:
|
|
||||||
|
|
||||||
$$
|
|
||||||
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
|
|
||||||
$$
|
|
||||||
|
|
||||||
## 翻转卡片公式展示
|
|
||||||
|
|
||||||
下面使用翻转卡片展示公式,点击"显示 LaTeX"按钮可以查看源码:
|
|
||||||
|
|
||||||
### 质能方程
|
|
||||||
|
|
||||||
<MathFlipCard latex="E = mc^2" client:load />
|
|
||||||
|
|
||||||
### 麦克斯韦方程组
|
|
||||||
|
|
||||||
<MathFlipCard latex="\nabla \cdot \mathbf{E} = \frac{\rho}{\varepsilon_0}" client:load />
|
|
||||||
|
|
||||||
### 薛定谔方程
|
|
||||||
|
|
||||||
<MathFlipCard latex="i\hbar\frac{\partial}{\partial t}\Psi(\mathbf{r},t) = \left[-\frac{\hbar^2}{2m}\nabla^2 + V(\mathbf{r},t)\right]\Psi(\mathbf{r},t)" client:load />
|
|
||||||
|
|
||||||
### 傅里叶变换
|
|
||||||
|
|
||||||
<MathFlipCard latex="\hat{f}(\xi) = \int_{-\infty}^{\infty} f(x) e^{-2\pi i x \xi} dx" client:load />
|
|
||||||
|
|
||||||
### 矩阵运算
|
|
||||||
|
|
||||||
<MathFlipCard latex="\begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} ax + by \\ cx + dy \end{pmatrix}" client:load />
|
|
||||||
|
|
||||||
## 传统公式展示(对比)
|
|
||||||
|
|
||||||
麦克斯韦方程组:
|
|
||||||
|
|
||||||
$$
|
|
||||||
\nabla \cdot \mathbf{E} = \frac{\rho}{\varepsilon_0}
|
|
||||||
$$
|
|
||||||
|
|
||||||
$$
|
|
||||||
\nabla \cdot \mathbf{B} = 0
|
|
||||||
$$
|
|
||||||
|
|
||||||
$$
|
|
||||||
\nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t}
|
|
||||||
$$
|
|
||||||
|
|
||||||
$$
|
|
||||||
\nabla \times \mathbf{B} = \mu_0 \mathbf{J} + \mu_0 \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t}
|
|
||||||
$$
|
|
||||||
|
|
||||||
## 复杂公式
|
|
||||||
|
|
||||||
薛定谔方程:
|
|
||||||
|
|
||||||
$$
|
|
||||||
i\hbar\frac{\partial}{\partial t}\Psi(\mathbf{r},t) = \left[-\frac{\hbar^2}{2m}\nabla^2 + V(\mathbf{r},t)\right]\Psi(\mathbf{r},t)
|
|
||||||
$$
|
|
||||||
|
|
||||||
傅里叶变换:
|
|
||||||
|
|
||||||
$$
|
|
||||||
\hat{f}(\xi) = \int_{-\infty}^{\infty} f(x) e^{-2\pi i x \xi} dx
|
|
||||||
$$
|
|
||||||
|
|
||||||
矩阵:
|
|
||||||
|
|
||||||
$$
|
|
||||||
\begin{pmatrix}
|
|
||||||
a & b \\
|
|
||||||
c & d
|
|
||||||
\end{pmatrix}
|
|
||||||
\begin{pmatrix}
|
|
||||||
x \\
|
|
||||||
y
|
|
||||||
\end{pmatrix}
|
|
||||||
=
|
|
||||||
\begin{pmatrix}
|
|
||||||
ax + by \\
|
|
||||||
cx + dy
|
|
||||||
\end{pmatrix}
|
|
||||||
$$
|
|
||||||
|
|
||||||
求和与积分:
|
|
||||||
|
|
||||||
$$
|
|
||||||
\sum_{i=1}^{n} i = \frac{n(n+1)}{2}
|
|
||||||
$$
|
|
||||||
|
|
||||||
$$
|
|
||||||
\prod_{i=1}^{n} i = n!
|
|
||||||
$$
|
|
||||||
|
|
||||||
## 测试完成
|
|
||||||
|
|
||||||
如果你能看到以上公式正确渲染,说明 LaTeX 公式支持已经成功配置!
|
|
||||||
@@ -1,426 +0,0 @@
|
|||||||
---
|
|
||||||
title: React 动效组件展示
|
|
||||||
description: 展示 NovaBlog 中可用的 React 动效 HTML 组件,包括悬浮卡片、打字机效果、翻转卡片、粒子背景和数学公式卡片
|
|
||||||
pubDate: 2024-01-20
|
|
||||||
author: NovaBlog
|
|
||||||
tags: [React, 动效, 组件, 教程]
|
|
||||||
category: 教程
|
|
||||||
heroImage: '/images/hello-world.jpg'
|
|
||||||
---
|
|
||||||
|
|
||||||
import AnimatedCard from '../../components/react/AnimatedCard';
|
|
||||||
import TypewriterText from '../../components/react/TypewriterText';
|
|
||||||
import FlipCard from '../../components/react/FlipCard';
|
|
||||||
import ParticleBackground from '../../components/react/ParticleBackground';
|
|
||||||
import MathFlipCard from '../../components/react/MathFlipCard';
|
|
||||||
import MergeTable, { Cell } from '../../components/react/MergeTable';
|
|
||||||
|
|
||||||
# React 动效组件展示
|
|
||||||
|
|
||||||
NovaBlog 支持在 MDX 中直接使用 React 组件,实现丰富的交互动效。本文展示了一些内置的动效组件示例。
|
|
||||||
|
|
||||||
## 🎴 悬浮卡片 (AnimatedCard)
|
|
||||||
|
|
||||||
鼠标悬停时卡片会浮起并放大,配合阴影效果增强立体感。
|
|
||||||
|
|
||||||
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(250px, 1fr))', gap: '1.5rem', margin: '2rem 0' }}>
|
|
||||||
<AnimatedCard
|
|
||||||
title="🚀 快速开发"
|
|
||||||
description="使用 Astro + React 实现极速开发体验"
|
|
||||||
color="#3b82f6"
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
<AnimatedCard
|
|
||||||
title="🎨 精美设计"
|
|
||||||
description="内置多种动效组件,轻松创建炫酷页面"
|
|
||||||
color="#10b981"
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
<AnimatedCard
|
|
||||||
title="⚡ 高性能"
|
|
||||||
description="Islands 架构,按需加载,极致性能"
|
|
||||||
color="#f59e0b"
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## ⌨️ 打字机效果 (TypewriterText)
|
|
||||||
|
|
||||||
模拟打字机的逐字显示效果,支持循环播放。
|
|
||||||
|
|
||||||
<div style={{
|
|
||||||
background: '#1a1a2e',
|
|
||||||
padding: '2rem',
|
|
||||||
borderRadius: '1rem',
|
|
||||||
textAlign: 'center',
|
|
||||||
margin: '2rem 0'
|
|
||||||
}}>
|
|
||||||
<TypewriterText
|
|
||||||
text="Hello, NovaBlog! 欢迎来到你的新博客..."
|
|
||||||
speed={80}
|
|
||||||
loop={true}
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
### 使用方式
|
|
||||||
|
|
||||||
```tsx
|
|
||||||
<TypewriterText
|
|
||||||
text="你要显示的文字"
|
|
||||||
speed={100} // 打字速度(毫秒)
|
|
||||||
loop={true} // 是否循环播放
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔄 翻转卡片 (FlipCard)
|
|
||||||
|
|
||||||
点击卡片实现 3D 翻转效果,适合展示正反两面内容。
|
|
||||||
|
|
||||||
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', gap: '1.5rem', margin: '2rem 0' }}>
|
|
||||||
<FlipCard
|
|
||||||
frontTitle="💡 小提示"
|
|
||||||
frontDescription="点击翻转查看更多"
|
|
||||||
backTitle="✅ 详细说明"
|
|
||||||
backDescription="这是一个翻转卡片的背面内容"
|
|
||||||
frontColor="#8b5cf6"
|
|
||||||
backColor="#06b6d4"
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
<FlipCard
|
|
||||||
frontTitle="🎯 技术栈"
|
|
||||||
frontDescription="React + TypeScript"
|
|
||||||
backTitle="📦 组件库"
|
|
||||||
backDescription="支持自定义样式和动画"
|
|
||||||
frontColor="#ec4899"
|
|
||||||
backColor="#14b8a6"
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
### 使用方式
|
|
||||||
|
|
||||||
```tsx
|
|
||||||
<FlipCard
|
|
||||||
frontContent={<div>正面内容</div>}
|
|
||||||
backContent={<div>背面内容</div>}
|
|
||||||
frontColor="#3b82f6"
|
|
||||||
backColor="#10b981"
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
```
|
|
||||||
|
|
||||||
## ✨ 粒子背景 (ParticleBackground)
|
|
||||||
|
|
||||||
基于 Canvas 的粒子动画背景,粒子之间会自动连线,营造科技感。
|
|
||||||
|
|
||||||
<ParticleBackground
|
|
||||||
particleCount={60}
|
|
||||||
color="#60a5fa"
|
|
||||||
speed={0.8}
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
|
|
||||||
### 自定义内容
|
|
||||||
|
|
||||||
<ParticleBackground
|
|
||||||
particleCount={30}
|
|
||||||
color="#f472b6"
|
|
||||||
speed={1.5}
|
|
||||||
client:load
|
|
||||||
>
|
|
||||||
<div style={{ textAlign: 'center' }}>
|
|
||||||
<h2 style={{ fontSize: '2.5rem', marginBottom: '1rem' }}>🎉 自定义内容</h2>
|
|
||||||
<p>可以在粒子背景上放置任意内容</p>
|
|
||||||
</div>
|
|
||||||
</ParticleBackground>
|
|
||||||
|
|
||||||
## 📐 数学公式翻转卡片 (MathFlipCard)
|
|
||||||
|
|
||||||
专门用于展示 LaTeX 数学公式的翻转卡片组件。正面显示渲染后的公式,点击"显示 LaTeX"按钮可以查看源码。
|
|
||||||
|
|
||||||
### 质能方程
|
|
||||||
|
|
||||||
<MathFlipCard latex="E = mc^2" client:load />
|
|
||||||
|
|
||||||
### 麦克斯韦方程组
|
|
||||||
|
|
||||||
<MathFlipCard latex="\nabla \cdot \mathbf{E} = \frac{\rho}{\varepsilon_0}" client:load />
|
|
||||||
|
|
||||||
### 薛定谔方程
|
|
||||||
|
|
||||||
<MathFlipCard latex="i\hbar\frac{\partial}{\partial t}\Psi(\mathbf{r},t) = \left[-\frac{\hbar^2}{2m}\nabla^2 + V(\mathbf{r},t)\right]\Psi(\mathbf{r},t)" client:load />
|
|
||||||
|
|
||||||
### 傅里叶变换
|
|
||||||
|
|
||||||
<MathFlipCard latex="\hat{f}(\xi) = \int_{-\infty}^{\infty} f(x) e^{-2\pi i x \xi} dx" client:load />
|
|
||||||
|
|
||||||
### 矩阵运算
|
|
||||||
|
|
||||||
<MathFlipCard latex="\begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} ax + by \\ cx + dy \end{pmatrix}" client:load />
|
|
||||||
|
|
||||||
### 使用方式
|
|
||||||
|
|
||||||
```tsx
|
|
||||||
import MathFlipCard from '../../components/react/MathFlipCard';
|
|
||||||
|
|
||||||
<MathFlipCard
|
|
||||||
latex="E = mc^2"
|
|
||||||
displayMode={true} // 可选,默认为 true
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
```
|
|
||||||
|
|
||||||
**属性说明**:
|
|
||||||
- `latex`:LaTeX 公式字符串
|
|
||||||
- `displayMode`:是否为块级公式(可选,默认为 true)
|
|
||||||
- `className`:自定义 CSS 类名(可选)
|
|
||||||
|
|
||||||
**特点**:
|
|
||||||
- 点击"显示 LaTeX"按钮可查看公式源码
|
|
||||||
- 点击"显示公式"按钮返回渲染结果
|
|
||||||
- 支持 KaTeX 的所有语法
|
|
||||||
- 适合教学和技术文档
|
|
||||||
|
|
||||||
## 📊 合并单元格表格 (MergeTable)
|
|
||||||
|
|
||||||
支持跨行跨列合并的高级表格组件,类似 Typst 的 tablex 功能。
|
|
||||||
|
|
||||||
### 基础示例:课程表
|
|
||||||
|
|
||||||
<MergeTable
|
|
||||||
headerRows={1}
|
|
||||||
client:load
|
|
||||||
data={[
|
|
||||||
[
|
|
||||||
Cell({ children: '时间/星期', header: true, rowspan: 2, align: 'center' }),
|
|
||||||
Cell({ children: '星期一', header: true, colspan: 2, align: 'center' }),
|
|
||||||
Cell({ children: '星期二', header: true, colspan: 2, align: 'center' }),
|
|
||||||
Cell({ children: '星期三', header: true, colspan: 2, align: 'center' }),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
Cell({ children: '上午', header: true }),
|
|
||||||
Cell({ children: '下午', header: true }),
|
|
||||||
Cell({ children: '上午', header: true }),
|
|
||||||
Cell({ children: '下午', header: true }),
|
|
||||||
Cell({ children: '上午', header: true }),
|
|
||||||
Cell({ children: '下午', header: true }),
|
|
||||||
],
|
|
||||||
['第1节', '数学', '语文', '英语', '物理', '化学'],
|
|
||||||
['第2节', '语文', '数学', '物理', '英语', '生物'],
|
|
||||||
[
|
|
||||||
Cell({ children: '午休', rowspan: 2, align: 'center'}),
|
|
||||||
Cell({ children: '午休', rowspan: 2, align: 'center'}),
|
|
||||||
Cell({ children: '午休', rowspan: 2, align: 'center'}),
|
|
||||||
Cell({ children: '午休', rowspan: 2, align: 'center'}),
|
|
||||||
Cell({ children: '午休', rowspan: 2, align: 'center'}),
|
|
||||||
Cell({ children: '午休', rowspan: 2, align: 'center'}),
|
|
||||||
],
|
|
||||||
[],
|
|
||||||
['第3节', '体育', '音乐', '美术', '历史', '地理'],
|
|
||||||
['第4节', '自习', '自习', '自习', '自习', '自习'],
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
|
|
||||||
### 复杂合并示例:项目进度表
|
|
||||||
|
|
||||||
<MergeTable
|
|
||||||
headerRows={2}
|
|
||||||
striped
|
|
||||||
client:load
|
|
||||||
data={[
|
|
||||||
[
|
|
||||||
Cell({ children: '项目阶段', header: true, rowspan: 2, align: 'center' }),
|
|
||||||
Cell({ children: '任务详情', header: true, colspan: 3, align: 'center' }),
|
|
||||||
Cell({ children: '状态', header: true, rowspan: 2, align: 'center' }),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
Cell({ children: '任务名称', header: true }),
|
|
||||||
Cell({ children: '负责人', header: true }),
|
|
||||||
Cell({ children: '截止日期', header: true }),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
Cell({ children: '需求分析', rowspan: 2, align: 'center'}),
|
|
||||||
'用户调研',
|
|
||||||
'张三',
|
|
||||||
'2024-02-01',
|
|
||||||
Cell({ children: '✅ 已完成'}),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'需求文档',
|
|
||||||
'李四',
|
|
||||||
'2024-02-15',
|
|
||||||
Cell({ children: '✅ 已完成'}),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
Cell({ children: '开发阶段', rowspan: 3, align: 'center'}),
|
|
||||||
'前端开发',
|
|
||||||
'王五',
|
|
||||||
'2024-03-01',
|
|
||||||
Cell({ children: '🔄 进行中'}),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'后端开发',
|
|
||||||
'赵六',
|
|
||||||
'2024-03-15',
|
|
||||||
Cell({ children: '🔄 进行中'}),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'数据库设计',
|
|
||||||
'钱七',
|
|
||||||
'2024-02-28',
|
|
||||||
Cell({ children: '✅ 已完成'}),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
Cell({ children: '测试上线', rowspan: 2, align: 'center'}),
|
|
||||||
'功能测试',
|
|
||||||
'孙八',
|
|
||||||
'2024-04-01',
|
|
||||||
Cell({ children: '⏳ 待开始'}),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'部署上线',
|
|
||||||
'周九',
|
|
||||||
'2024-04-15',
|
|
||||||
Cell({ children: '⏳ 待开始'}),
|
|
||||||
],
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
|
|
||||||
### 简洁语法示例
|
|
||||||
|
|
||||||
你也可以使用更简洁的语法,直接传入二维数组:
|
|
||||||
|
|
||||||
<MergeTable
|
|
||||||
headerRows={1}
|
|
||||||
client:load
|
|
||||||
data={[
|
|
||||||
['姓名', '年龄', '城市', '职业'],
|
|
||||||
['张三', '28', '北京', '工程师'],
|
|
||||||
['李四', '32', '上海', '设计师'],
|
|
||||||
['王五', '25', '广州', '产品经理'],
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
|
|
||||||
### 使用方式
|
|
||||||
|
|
||||||
```tsx
|
|
||||||
import MergeTable, { Cell } from '../../components/react/MergeTable';
|
|
||||||
|
|
||||||
// 使用 Cell 函数定义合并单元格
|
|
||||||
<MergeTable
|
|
||||||
headerRows={1} // 前几行作为表头
|
|
||||||
bordered={true} // 显示边框(默认 true)
|
|
||||||
striped={false} // 斑马纹(默认 false)
|
|
||||||
hoverable={true} // 悬停效果(默认 true)
|
|
||||||
compact={false} // 紧凑模式(默认 false)
|
|
||||||
client:load
|
|
||||||
data={[
|
|
||||||
[
|
|
||||||
Cell({ children: '标题', header: true, colspan: 2 }),
|
|
||||||
Cell({ children: '操作', header: true }),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
Cell({ children: '合并内容', colspan: 2 }),
|
|
||||||
'编辑',
|
|
||||||
],
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
```
|
|
||||||
|
|
||||||
**Cell 函数属性**:
|
|
||||||
- `children`:单元格内容
|
|
||||||
- `colspan`:跨列数
|
|
||||||
- `rowspan`:跨行数
|
|
||||||
- `align`:对齐方式(`'left' | 'center' | 'right'`)
|
|
||||||
- `header`:是否为表头单元格(使用 `<th>` 标签)
|
|
||||||
- `style`:自定义样式
|
|
||||||
- `className`:自定义 CSS 类名
|
|
||||||
|
|
||||||
**MergeTable 属性**:
|
|
||||||
- `data`:表格数据(二维数组)
|
|
||||||
- `headerRows`:表头行数(这些行会使用 `<th>` 标签)
|
|
||||||
- `bordered`:是否显示边框
|
|
||||||
- `striped`:是否显示斑马纹
|
|
||||||
- `hoverable`:是否启用悬停效果
|
|
||||||
- `compact`:紧凑模式(更小的内边距)
|
|
||||||
|
|
||||||
## 📝 如何在文章中使用
|
|
||||||
|
|
||||||
### 1. 导入组件
|
|
||||||
|
|
||||||
在文章顶部添加 import 语句:
|
|
||||||
|
|
||||||
```mdx
|
|
||||||
import AnimatedCard from '../../components/react/AnimatedCard';
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. 使用组件
|
|
||||||
|
|
||||||
```mdx
|
|
||||||
<AnimatedCard
|
|
||||||
title="标题"
|
|
||||||
description="描述"
|
|
||||||
color="#3b82f6"
|
|
||||||
client:load
|
|
||||||
/>
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. client 指令说明
|
|
||||||
|
|
||||||
| 指令 | 说明 |
|
|
||||||
|------|------|
|
|
||||||
| `client:load` | 页面加载时立即激活组件 |
|
|
||||||
| `client:visible` | 组件进入视口时激活 |
|
|
||||||
| `client:idle` | 浏览器空闲时激活 |
|
|
||||||
| `client:media="(min-width: 768px)"` | 满足媒体查询时激活 |
|
|
||||||
|
|
||||||
## 🎨 创建自定义组件
|
|
||||||
|
|
||||||
你可以在 `src/components/react/` 目录下创建自己的 React 组件:
|
|
||||||
|
|
||||||
```tsx
|
|
||||||
// src/components/react/MyComponent.tsx
|
|
||||||
import { useState } from 'react';
|
|
||||||
|
|
||||||
interface MyComponentProps {
|
|
||||||
title: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function MyComponent({ title }: MyComponentProps) {
|
|
||||||
const [count, setCount] = useState(0);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div style={{ padding: '1rem', background: '#f3f4f6' }}>
|
|
||||||
<h3>{title}</h3>
|
|
||||||
<button onClick={() => setCount(count + 1)}>
|
|
||||||
点击次数: {count}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
然后在文章中使用:
|
|
||||||
|
|
||||||
```mdx
|
|
||||||
import MyComponent from '../../components/react/MyComponent';
|
|
||||||
|
|
||||||
<MyComponent title="我的组件" client:load />
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 总结
|
|
||||||
|
|
||||||
NovaBlog 提供了灵活的组件系统,让你可以在 Markdown 中嵌入丰富的交互内容。通过 React 组件,你可以实现:
|
|
||||||
|
|
||||||
- 🎴 **视觉效果**:悬浮、翻转、渐变等动画
|
|
||||||
- ⌨️ **动态文字**:打字机、滚动、闪烁效果
|
|
||||||
- ✨ **背景特效**:粒子、波浪、光效
|
|
||||||
- 🎮 **交互功能**:计数器、表单、游戏
|
|
||||||
- 📐 **数学公式**:翻转卡片展示 LaTeX 公式
|
|
||||||
- 📊 **高级表格**:支持合并单元格的复杂表格
|
|
||||||
|
|
||||||
快去尝试创建属于你自己的动效组件吧! 🚀
|
|
||||||
Reference in New Issue
Block a user