HTML 画布
HTML-in-Canvas API (drawElementImage) 可让您以 GPU 速度将实时渲染的 DOM 元素直接捕获到画布中。这意味着您可以采用任何 HTML(仪表板、表单、登陆页面、应用程序 UI),并使用着色器、3D 转换和后处理效果将它们渲染为 WebGL 场景中的纹理。
它是如何运作的
- 将 HTML 内容放入
<canvas layoutsubtree>元素内 - 浏览器将 HTML 子元素呈现为普通 DOM
- 调用
ctx.drawElementImage(element, x, y, w, h)将渲染的像素捕获到画布中 - 使用画布作为 Three.js 纹理,应用着色器,映射到 3D 几何体
是什么让这与众不同
诸如html2canvas 之类的传统方法会在 JavaScript 中重新解析和重新渲染 DOM,它们速度慢、有损耗,并且会错过诸如 backdrop-filter、复杂阴影和 Web 字体之类的 CSS 功能。 drawElementImage API 使用浏览器自己的合成器,因此:
- 像素完美 — 每个 CSS 功能都受支持,因为浏览器会原生渲染它
- GPU 加速 — 以 60fps 的速度捕获,足够快的速度用于实时动画
- 实时内容 — HTML 可以在捕获之间进行动画、滚动和更改
- 同时多个捕获 — 无嵌套限制,多个
<canvas layoutsubtree>元素可以捕获同一组合中的不同内容
特征检测
在使用 API 之前始终进行功能检测。对于未启用该标志的浏览器,组合应该优雅地回退。重新捕捉每一帧
对于动画内容(滚动、过渡、计数器),请在渲染循环内调用drawElementImage 以更新每帧的纹理:
目录块
一次安装所有 HTML-in-Canvas 块:| 堵塞 | 描述 | 安装 |
|---|---|---|
| iOS 26 液态玻璃主屏幕 | iPhone 主屏幕带有实时 Liquid Glass 通知和小部件 | npx hyperframes add ios26-liquid-glass |
| macOS Tahoe 液体玻璃桌面 | 带有液体玻璃窗口、扩展坞和通知的 MacBook 桌面 | npx hyperframes add macos-tahoe-liquid-glass |
| 液体玻璃通知 | 带有进度和回复状态的原生玻璃通知堆栈 | npx hyperframes add liquid-glass-notification |
| iPhone 和 MacBook | 具有实时 HTML 屏幕的真实 3D GLTF 设备 | npx hyperframes add vfx-iphone-device |
| 文本光标 | 带有彩色阴影的戏剧性文本 | npx hyperframes add vfx-text-cursor |
| 门户 | 体积光的尺寸突破 | npx hyperframes add vfx-portal |
| 粉碎 | HTML 碎成玻璃碎片 | npx hyperframes add vfx-shatter |
| 磁性 | 磁场粒子可视化 | npx hyperframes add vfx-magnetic |
| 液体背景 | 有机液体模拟 | npx hyperframes add vfx-liquid-background |