加载中…
创作者 · MotionSites
查看原始来源 ↗Prompt
构建一个 **single-file** `index.html` 全 viewport 海报。无滚动。无 frameworks。不要重新设计。必须**精确**匹配布局、字体、颜色、两个图像 URL、入场编排、移动端菜单和鼠标 morph-reveal。
---
## 0. 文档外壳
```html
<!doctype html>
<html lang="en" class="anim">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<meta name="theme-color" content="#161616">
<title>Orbit — Secure system</title>
```
- 根 `<html>` 初始带有 class `anim`
- `html, body`:`width/height 100%`、`margin: 0`、`overflow: hidden`,背景 `#161616`
- Body:`"Orbit Sans", Arial, Helvetica, sans-serif`,颜色 `#fff`,启用抗锯齿
- CSS vars:
- `--ink: #ffffff`
- `--surface: #161616`
- `--orb-reveal: cubic-bezier(.16, 1, .3, 1)`
- `--orb-soft: cubic-bezier(.25, .8, .28, 1)`
结构:
```
main.viewport (fixed, inset 0, black)
section.stage (absolute, inset 0, contain:strict, isolation:isolate)
[所有海报元素]
```
Z-order:wordmark `1` → flower `2` → corner copy `3` → brand/nav/pill `4`。移动端:scrim `9`、sheet `10`、burger `12`。
---
## 1. 字体(必需)
两个自定义 TrueType 字体,weight 400、`font-display: block`,以 `@font-face` data-URLs 嵌入:
1. **`"Orbit Sans"`** — nav、pill、corner copy。Fallback:Arial, Helvetica, sans-serif
2. **`"Orbit Display"`** — 仅用于巨型 wordmark。Fallback:`"Times New Roman", Times, serif`
不要使用 Inter、Roboto、system-ui 或 Playfair。如有需要,从现有 `index.html` 的 `@font-face` blocks 中提取原始 base64 TTFs。
---
## 2. 两个图像 URL(必须原样使用——不要替换)
两者均为 Higgsfield 代理的 PNG,以 webp `w=1280&q=85` 提供。透明背景。Pixel-art / halftone lilies。
### FRONT / BG lily(默认可见)
```
https://images.higgs.ai/?default=1&output=webp&url=https%3A%2F%2Fd8j0ntlcm91z4.cloudfront.net%2Fuser_38xzZboKViGWJOttwIXH07lWA1P%2Fhf_20260808_192942_e1086505-d7da-433b-a59b-8220f4e6c808.png&w=1280&q=85
```
原始来源:
```
https://d8j0ntlcm91z4.cloudfront.net/user_38xzZboKViGWJOttwIXH07lWA1P/hf_20260808_192942_e1086505-d7da-433b-a59b-8220f4e6c808.png
```
### REVEAL / TOP lily(仅在 morph trail 内可见)
```
https://images.higgs.ai/?default=1&output=webp&url=https%3A%2F%2Fd8j0ntlcm91z4.cloudfront.net%2Fuser_38xzZboKViGWJOttwIXH07lWA1P%2Fhf_20260808_151324_bf318a5f-5525-4fc7-aab5-e9a341018828.png&w=1280&q=85
```
原始来源:
```
https://d8j0ntlcm91z4.cloudfront.net/user_38xzZboKViGWJOttwIXH07lWA1P/hf_20260808_151324_bf318a5f-5525-4fc7-aab5-e9a341018828.png
```
Front `alt`:`Pixel-art pink and violet lily`。Reveal `alt=""`。不要使用其他图像。
---
## 3. 舞台上的所有元素(桌面端)
### Brand mark
SVG `.brand-mark`,`viewBox="0 0 66 62"`,白色 4-stroke 星号,`stroke-width: 5px`,square caps:
- `(33,1)→(33,61)`、`(3,31)→(63,31)`、`(11.8,9.8)→(54.2,52.2)`、`(54.2,9.8)→(11.8,52.2)`
- 位置:`top: 2.141745dvh; left: 3.854167vw; width: clamp(34px, min(3.4375vw, 5.2dvh), 66px)`
### Primary nav
链接:Home / Resources / Benefits / Contact → `#home` `#resources` `#benefits` `#contact`
白色,尺寸 `clamp(13px, min(1.302083vw, 2.05dvh), 25px)`,每个 `li` 均位于 `top: 3.426791dvh`:
| 项目 | left | scaleX |
|---|---|---|
| Home | `10.104167vw` | `1.165` |
| Resources | `17.526042vw` | `1.052` |
| Benefits | `27.578125vw` | `1.126` |
| Contact | `36.171875vw` | `1.168` |
`.primary-nav` 覆盖完整 stage,但设置 `pointer-events: none`;链接通过 `pointer-events: auto` 重新启用交互,以确保 lily 仍可 hover。
### Secure system pill
白色 pill,文本颜色 `#161616`,`top: 2.336449dvh; right: 7.5vw`,高度 `clamp(34px, 4.439252dvh, 57px)`,`border-radius: 999px`,字距 `0.026923em`。
### Wordmark ORBIT
```html
<h1 class="orbit-word" id="orbit-title" aria-label="Orbit">
<span class="orbit-word__mask">
<span class="orbit-word__inner">
<span class="orbit-word__white"><span class="orbit-word__o">O</span>R</span>
<span class="orbit-word__pink">BIT</span>
</span>
</span>
</h1>
```
- `top: 11.565421dvh; left: 4.348958vw`
- `"Orbit Display"`,尺寸 `min(27.8125vw, 55dvh)`,字距 `0.033708em`
- **OR** 纯色 `#fff`;**O** 使用 `scaleX(1.0866)`、`margin-right: 0.042135em`
- **BIT** 渐变:通过 `background-clip: text` 应用 `linear-gradient(180deg, #ffc5dc 0%, #fd86db 100%)`
### Flower stack
```html
<div class="flower">
<img class="flower__sizer" src="[FRONT]" alt="" aria-hidden="true">
<div class="flower__layer flower__layer--bg">
<img src="[FRONT]" alt="Pixel-art pink and violet lily">
</div>
<div class="flower__layer flower__layer--top" aria-hidden="true">
<img src="[REVEAL]" alt="">
</div>
</div>
```
- `top: 14.749065dvh; left: 49.121328vw; height: 106.109034dvh; transform: translateX(-50%); pointer-events: none`
- Sizer:隐藏,`height: 100%; width: auto`(设置 intrinsic width)
- Layers:`absolute; inset: 0`;imgs 使用 `object-fit: cover`
- Top layer 初始完全被遮罩排除:`mask-image: linear-gradient(#0000, #0000)`
### Corner copy
颜色 `#f7f7f7`,尺寸 `clamp(14px, min(1.40625vw, 2.102804dvh), 27px)`,`bottom: 4.361371dvh`
左侧(`left: 3.177083vw; scaleX(1.073)`):`每个工作流,/ 智能互联。`
右侧(`left: 78.28125vw; scaleX(1.058)`):`减少手动工作。/ 创造更多有意义的产出。`
仅通过内部 `.support-copy__inner` 制作动画。
### Mobile chrome(桌面端隐藏)
Burger + scrim buttons。仅在 `(max-width: 900px), (max-aspect-ratio: 4 / 5)` 时显示。
---
## 4. 鼠标 morph-reveal trail(精确实现)
**不是** CSS circle spotlight。它是一条有机变形的 blob trail,会在 front lily 上打孔,并以相同形状绘制 reveal lily。
### 常量
```
TRAIL_MAX_POINTS = 60
TRAIL_HEAD_R = 140
TRAIL_NOISE_AMP = 44
TRAIL_BLOB_PTS = 24
TRAIL_FADE_SPEED = 0.92
TRAIL_SAMPLE_DIST = 8
```
### 架构
每个 `MorphTrailLayer`:
- 尺寸与 `.flower` 相同的隐藏 offscreen canvas(`display:none`)
- 带有 cover-fit `<img>` 的可见 absolute layer
- 每个 active frame:`maskImage = url(canvas.toDataURL())`,尺寸 `100% 100%`,no-repeat
两个 layers 使用同一条 trail:
- `invert=false` → FRONT/BG(白色填充 → `destination-out` blobs = 孔洞)
- `invert=true` → REVEAL/TOP(清空 canvas → 白色 blobs = 仅显示 trail)
鼠标位于 **`.stage`** 上:`mousemove` / `mouseenter` / `mouseleave`。通过 getBoundingClientRect + scale 转换到 flower canvas 空间。
### 每一帧
```
targetR = hovering ? 140 : 0
headRadius += (targetR - headRadius) * (hovering ? 0.14 : 0.04)
```
当处于 hovering 状态且 `headRadius > 5` 时,如果与上一个 sample 的距离 `> 8px`,则推入 `{x,y,r:headRadius,alpha:1,seed:random*100}`;上限为 60。
衰减:`alpha *= 0.92; r *= 0.995`;若 `alpha < 0.01` 则移除。
`time += 0.016`。
### `drawMorphBlob(ctx, cx, cy, r, t, seed)`
若 `r < 2` 则跳过。24 个 points:
```
n1 = sin(angle*3 + t*1.4 + seed) * 0.45
n2 = sin(angle*5 - t*0.9 + seed*2.3) * 0.3
n3 = cos(angle*2 + t*1.8 + seed*0.7) * 0.25
noise = (n1+n2+n3) * 44 * (r/140)
```
通过 midpoints + `quadraticCurveTo` 形成 closed path(有机 blob,而非 circle)。填充白色。
结果:移动鼠标会留下一条有机变形的 wipe,沿逐渐淡出的 trail 切除 front lily 并绘出第二朵 lily。Wordmark 仍会透过透明花瓣显示。离开 stage → head 通过 lerp 闭合,trail 消失。
---
## 5. 入场动画(仅一次)
当 `<html class="anim">` 存在时使用纯 CSS。最后一个 `orb-*` animation 完成后,JS 移除 `.anim`(6000ms safety)。永不重播。
Keyframes:
- `orb-word`:`translateY(118%) → 0`(无 fade)
- `orb-subject`:fade + `translateX(-50%) translateY(3.4dvh → 0)` — 不要 scale lily
- `orb-corner` / `orb-quiet`:小幅上移 + fade
- `orb-dim`:仅 fade
桌面端 timing:
| 元素 | anim | dur | delay |
|---|---|---|---|
| brand | quiet | 620ms | 100ms |
| nav 1–4 | dim | 550ms | 180 / 225 / 270 / 315ms |
| pill | quiet | 620ms | 340ms |
| word inner | word | 1150ms | 300ms |
| flower | subject | 1150ms | 660ms |
| 两侧 corners | corner | 720ms | **相同的 980ms** |
Easing:word/flower 使用 `--orb-reveal`;其余使用 `--orb-soft`。
动画期间,wordmask 使用 overflow hidden + padding/negative margin,使 serif 可以上升而不裁剪布局。
不要在 nav `li`、corner parents 或 O 上对 transform 制作动画——它们的 `scaleX` 用于视觉校正。
Reduced motion:仅对整个 stage 使用 280ms fade。
移动端入场:使用 burger 替代 pill/nav;delays 略微收紧。
---
## 6. 响应式要点
**(max-width: 900px) 或 (max-aspect-ratio: 4/5):** 白色圆形 burger、frosted sheet menu、scrim,以及关闭时的 Escape/Tab-trap/inert。
**(max-aspect-ratio: 4/5):** 更小且居中的 lily,`height: min(55dvh, 110vw)`;word 使用 `min(27.5vw, 18dvh)`;corner copy 自动换行。
**(max-width: 1200px) 或 portrait:** wordmark 居中(`left:0; width:100%; text-align:center`)。
---
## 7. 验收清单
- 黑色 `#161616` 海报,无滚动
- 星号 + 4 个 nav 单词,使用精确 scaleX + 白色 Secure system pill
- 巨型 OR 为白色 + BIT 为粉色渐变;O 略宽
- FRONT lily 位于精确的桌面端坐标,并与 BIT 重叠
- 加载:frame → word 上升 → lily 在前方上升 → 两侧 corners 同时出现;随后移除 `.anim`
- 鼠标:140px-head 有机变形 trail、24-point noisy blobs、fade 0.92、每 8px 采样、最多 60 个 points
- Trail 切除 FRONT 并绘制 REVEAL;wordmark 可透过透明区域阅读
- 精确使用上方两个 Higgsfield URLs
- 嵌入 Orbit Sans + Orbit Display适用模型与稳定度
建议模型
继续探索
@Oluwaphilemon1 使用 Claude Fable 5 · Three.js · Blender · GSAP完成的网页案例,包含公开结果、完整 Prompt 与原始来源。
提示语
Claude Fable 5 和 GPT-5.6 很强🥵🥵🥵 下面是我如何使用 Claude 构建的 👇 提示词:「设计一个机构网站,把服务以 3D 超市商品包装的形式呈现」 使用 Three.js 和 WebGL 在浏览器中实时渲染所有产品 使用 Blender 制作包装模型,然后导出为 GLTF 以加载到 Three.js 中 使用 GSAP 实现流畅的产品旋转和悬停交互 如果你想做一个让客户感觉像是在购买高级商品的作品集,请保存这条 🛒
复制这段 TSX 组件源码,交给 Cursor、v0、Claude 等 AI 编程工具,说明这是「3D Animated Pin」的 Aceternity UI 组件实现,即可让它接入你的 React 项目,再按需替换文案、配色与触发参数复用。
提示语
// components/ui/3d-pin.tsx "use client"; import React, { useState } from "react"; import { motion } from "motion/react"; import { cn } from "@/lib/utils"; export const PinContainer = ({ children, title, href, className, containerClassName…

提示语
首先搜索 "/unlazy" skill,完整阅读它,并在整个任务中持续使用。 将此视为一项至少持续 {argument name="minimum duration" default="5 小时"} 的大型视觉构建。如果环境允许,最好进行 {argument name="optimal duration" default="8–24 小时"} 有实质意义的实现和迭代。不要在制作出一个还不错的场景后就停下。 在浏览器中创建一个细节极其丰富的实时 {argument nam