跳至正文
Labs

Labs

这里是本站 demo 的统一入口。从下面选择一个实验,直接打开独立页面,或跳到本页对应的交互示例。

HeroUI Pro 组件文档 · 编写 demo

Demo 列表

  • Lieflat Charts · 四种数据表达

    用 CellSlider 调整数量、时间趋势、100% 构成与前后对比,并查阅完整图型目录。

  • Orbit · 轨道重力实验室

    放置或抛出天体,观察星系、三体编舞与碰撞。

  • 无穷海岸 · 分形探索

    全屏探索曼德勃罗集合,切换八个位置与五种配色。

  • Three.js · 3D 场景

    换形状、颜色与灯光,拖动查看物体,认识 3D 场景。

  • CSS · 圆弧时间线

    观察卡片之间的圆弧连接线怎样随页面宽度调整。

  • React · 滚动玻璃胶囊导航

    滚动内部页面,观察全宽导航通过双阈值收缩为玻璃胶囊。

  • HeroUI Pro · 选择与评价

    试用句子里的选择器和星级评分,查看即时反馈。

  • HeroUI Pro · 消息回放

    暂停、调速和重放一段包含步骤、来源与代码的回答。

  • HeroUI · 编辑与预览

    编辑内容、切换样式,观察表单与预览如何同步。

  • Svelte · 响应式计数

    改变计数和步长,观察派生值一起更新。

  • Astro · 静态主题组件

    查看主题提示框如何和正文一起呈现。

  • KaTeX 与 Mermaid

    查看文章里的数学公式、流程图及其 Markdown 写法。

React:滚动玻璃胶囊导航

这个技术备份展示完整的滚动胶囊效果:导航在页面顶部保持全宽透明,滚动后收缩为居中的玻璃胶囊。使用内部滚动区域体验,不会改变 Labs 页自身的阅读位置。

Scroll-aware capsule向下滚动,观察全宽导航收缩为玻璃胶囊。

Interaction study · 01

One surface,
two spatial states.

顶部状态让导航融入首屏;滚动状态缩短宽度、增加高度,并显示稳定的玻璃表面。

02

Overview

导航只维护一个布尔状态,视觉变化全部交给 CSS。

03

Anatomy

外层控制位置与宽度,内层 nav 只负责品牌、链接和操作。

04

Motion

双阈值避免临界滚动位置反复切换,requestAnimationFrame 合并高频读取。

05

Verification

滚动超过 30px 后进入胶囊状态,回到 8px 内恢复展开状态。

HeroUI Pro:选择与评价

InlineSelect 把选择器放进一句话,Rating 用星级表达反馈。试试下拉选项、方向键和评分;变化会立即显示在下方。

留一点反馈
选择关注点,再为这个示例打个分。
HeroUI Pro
这次更关注

用更少的操作,让文章更容易读完。

你的体验评分
阅读体验 · 4 / 5 星仅在本页演示,不会提交或保存。

HeroUI Pro:完整的消息过程

默认展开一段完整回答,包含演示步骤、消息、来源和复制操作。点击「重新回放」,可以暂停、调速或直接跳到完整结果。

从步骤到回答
先看完整结果,也可以重新播放消息出现的过程。
HeroUI Pro
1
这篇博客怎样同时展示文章和交互式 demo?
A

读取文章已完成
读取事先准备好的文章片段与目录。
整理要点已完成
将示例材料整理成内容、组件和部署三个主题。
生成展示已完成
逐段回放预先编写的回答,展示流式消息的交互。
文章由 Astro 在构建时生成完整 HTML 。
这个交互区域是一棵独立的 React 组件树,使用 HeroUI 控件和 HeroUI Pro 消息组件 。
同一份组件同时用于 MDX 文章和独立页面;同页的 Svelte 组件管理自己的状态。
演示只回放本地数据,没有请求模型,也没有保存或发送输入。
MDX · 复用同一个组件
import AgentReplay from './AgentReplay';

<AgentReplay client:visible />
回放完成 · 7 / 7React + HeroUI + Tailwind v4

这个示例只回放本地预设数据,不调用 AI 模型或后端服务。

HeroUI:编辑与即时预览

输入框、选择器、开关与卡片组成一个小型编辑器。切换到「样式与状态」,还可以比较按钮、状态标签和折叠面板。

一张会回应的文章卡片
修改标题、切换分类,再看预览如何变化。
HeroUI OSS
最多 60 个字符,仅更新这张演示卡片。
文章分类
前端开发约 4 分钟阅读

把前端实验写进一篇博客

正文静态生成,交互按需加载。一个组件,既能嵌入文章,也能作为独立页面继续生长。

AstroReactMDX
修改上方内容,预览会立即更新。

其他框架:Svelte

这个计数器使用 Svelte 的响应式状态与派生值。改变步长后,按钮和派生值会一起更新,React 演示的状态保持独立。

一个状态,两个结果
计数变化时,派生值自动更新。
Svelte 5
当前计数
0
派生值 · 计数 × 2
0

Labs 按组件库和框架组织实验;后续 Vue 或更多 Svelte 示例会沿用各自独立的组件与章节。目前的 Vue 示例尚未接入。

Astro:静态主题组件

普通的 Astro 组件可以直接嵌入 MDX。例如下面的提示框来自 Astro-book,不需要加载 React 运行时:

这段内容由主题的 Notice 组件输出,和文章一起生成静态 HTML。
mdx
import Notice from '@tcitry/astro-book/components/Notice';

<Notice variant="info">在文章中补充一条说明。</Notice>

文章的公式和图表

数学公式由 KaTeX 在构建时渲染,Mermaid 图表在页面需要时加载。下面仍然使用普通 Markdown 写法,代码块支持语法高亮与复制。

行内公式 E=mc2E = mc^2 和块级公式可以继续使用:

∫01x2 dx=13\int_0^1 x^2\,dx = \frac{1}{3}
flowchart TD
  MDX[MDX 文章] --> HTML[Astro 静态 HTML]
  MDX --> React[React 与 HeroUI]
  MDX --> Svelte[Svelte 组件]
  HTML --> Reader[浏览器]
  React --> Reader
  Svelte --> Reader

组件写一次,使用两次

文章中按需加载同一份组件:

mdx
import AgentReplay from '../../components/demos/AgentReplay';

<AgentReplay client:visible />

独立页面复用它,并在页面加载时启动交互:

astro
---
import AgentReplay from '../../components/demos/AgentReplay';
---
<AgentReplay client:load />

本站的交互 MDX 页面放在 src/pages/,组件放在 src/components/。原有 Blog 内容继续通过只读兼容层导入;交互文章目前先在站点仓库中编写。

更多实验可以继续复用阅读布局、章节目录和组件入口。

已有演示,统一构建

Three.js 场景与圆弧时间线的独立页面已收录在顶部 Demo 列表。它们与博客共用开发、构建和部署流程,组件代码保存在本站;圆弧时间线继续保留文章中原有的嵌入地址。

使用与定制

本站由 Astro 7.3.1 静态生成页面,使用 @tcitry/astro-book 提供阅读布局;新增界面优先采用 Tailwind CSS 4.3.3,需要局部样式时再使用 CSS Modules。

交互区域使用 React 19.2.8、HeroUI 3.2.4 与 Svelte 5.57.0。HeroUI Pro 1.0.0-beta.8 由 tcitry-blog 接入;公开主题本身不依赖 React、HeroUI 或商业组件。本站文章与 MDX 的代码块继续使用 HeroUI Pro CodeBlock。

博客助手

正在打开博客助手…