Your work,
front and centre.
A hero that leads with the images instead of describing them. Swap in your own and the corridor rebuilds around them.
透视图片流首屏
让双轨图片沿透视走廊流动,用作品本身抓住访客注意力。
中央标题与说明浮于双侧镜像图片流之上;图片、卡片密度、速度、轴线与透视路径均可配置,并在减少动态效果偏好下停驻为完整静帧。
你需要把“透视图片流首屏”组件集成到当前项目。 【核心目标】 1. 排版结构、响应式行为、交互状态和动画轨迹/节奏是本组件的核心,优先级高于参考文案和媒体。 2. 品牌、文案、图片、视频、数据和链接均为可替换内容,不得因为换素材而重新设计版式或用“相似动效”替代原效果。 3. 必须先完成素材确认,再开始编码;如果本 Prompt 后附源码或 Demo,它们是布局与动效的事实基线。 【组件规格】 组件类型:首屏 目标:让双轨图片沿透视走廊流动,用作品本身抓住访客注意力。 布局:根节点使用 relative、overflow:hidden 与 container-type:inline-size,所有走廊尺寸基于 cqw,因此不按视口写死像素尺寸。装饰性图片轨道绝对定位铺满容器,透视原点默认为水平 50%、垂直 55%;左右轨道共用同一图片序列并镜像排列。单张卡片默认为 18cqw × 25cqw、圆角 0.4cqw,图片使用 object-cover。文案作为更高 z-index 的前景层:标题居中靠上,辅助文字居中靠下,上下间距使用 6cqw;标题字号使用 clamp(1rem, 5cqw, 3rem),说明最宽 42cqw。保持浅色中性背景、暗色标题和次级灰说明;不新增导航、按钮、指标卡或背景视频。 交互与动画:创建左右镜像的双轨 3D 透视走廊。默认参数为 perspective=30、cardWidth=18、cardHeight=25、cardRadius=0.4、birthHeight=2.6、exitHeight=46、railBirth=-11、railExit=44、fan=3.3、turnBirth=6、turnExit=28、stops=24;cards=9、speed=18 秒、axis=55。按表观高度的几何级数计算 scale,再推导 z;使用 fan 曲线让轨道在远端快速张开,并将 Y 轴旋转从 turnBirth 插值到 turnExit。对路径采样 stops 次,动态生成左右两套 CSS keyframes。每条轨道同时渲染 cards 张图,图片不足时循环取用;使用 -(i × speed) / cards 秒的负延迟填满首帧,动画为线性无限循环,不用 JavaScript 定时器驱动。使用 React.useId 为每个实例生成独立类名和关键帧名。轨道设为 aria-hidden、pointer-events:none,图片禁止拖拽。在 prefers-reduced-motion: reduce 下暂停而非删除卡片动画,使负延迟形成的完整走廊停驻为静帧。 视觉方向:以灰色为当前参考色调;最终品牌色通过 props 或配置替换,同时保持对比度和视觉层级。 技术基线:React、TypeScript 与 Tailwind CSS。组件 API 包含 images(src/alt 数组)、cards=9、speed=18、axis=55、path、children、className 与标准 div 属性,并提供 cn 工具依赖。 【阶段一:素材确认——现在只执行这一阶段】 先检查当前项目和本轮对话中已经存在的素材,只列出本组件尚缺的项目。不要安装依赖,不要创建、删除或修改文件。 本组件的素材核对范围: 1. 首屏主标题、指定换行位置与底部辅助说明 2. 精确 9 张拥有使用权的图片,与默认 cards=9 对齐;建议统一视觉风格并接近 18:25 竖向画幅,仅在少于 9 张时循环复用 3. 每张图片的文件或永久 URL 以及内部素材说明;预览轨道是装饰性内容,不强制向读屏器重复朗读 4. 如需偏离默认效果:指定卡片数量、循环周期、轴线高度或路径参数 只输出下表;若有缺失,按编号一次性索取;若无缺失,只请求用户确认“开始集成”: | 编号 | 素材或配置 | 必需/可选 | 数量 | 格式、比例或字数建议 | 用途 | 缺失时处理 | 要求: - 不重复索要用户已经提供的内容,也不索要组件不会显示的整站资料。 - 只有缺失后会阻止组件正常显示或运行的项目才标为“必需”;其余标为“可选”。 - 品牌、媒体、数据、链接和接口配置必须分清,不要把 API 或交互规则误写成需要上传的素材。 - 不保留参考品牌或未经确认的第三方热链,不自行搜索或猜测客户素材。 - 若存在必需缺失项:请用户提供,或逐项批准中性占位;只收到部分素材不能进入阶段二。 - 若只缺可选项:请用户逐项选择“提供”或“跳过”。若没有任何缺失项,在表内写明“素材已齐备”。 - 只有当所有必需项都已“已提供/已批准占位”、所有可选项都已“已提供/已跳过”,并且用户明确回复“开始集成”时,才允许进入阶段二。 - 用户也可以直接回复“使用中性占位素材继续”;这表示为全部缺失项批准中性占位并立即开始集成。所有占位内容必须清楚标记。 - 输出素材表和一次确认请求后停止,等待用户回复,不要提前编写或修改代码。 【阶段二:素材确认后执行】 仅在上述三项门禁全部满足,或用户明确回复“使用中性占位素材继续”后开始。收到部分素材但门禁未满足时,更新同一张素材表并继续等待,不得编码。 1. 将用户素材按清单编号映射到 props 或配置,不写死品牌、文案、媒体、指标或链接。 2. 保留上述布局层级、关键比例、响应式断点、交互状态和动画时间线;素材比例或字数不匹配时只做维持原设计所需的最小调整,并报告差异。 3. 优先复用项目现有组件和依赖,不覆盖无关页面、路由、全局样式或配置。 4. 输出或写入完整组件源码、最小 Demo、必要 imports 与依赖安装命令;目录遵循当前项目规范。 5. 验证 360px、768px、1440px,无水平溢出;验证键盘、触屏、focus-visible、资源失败 fallback 与 reduced-motion。 6. 运行项目现有的类型检查、测试和生产构建。 【完成报告】 只报告修改文件、使用及待替换的素材编号、依赖变化、框架适配差异、验证命令与结果,以及尚未解决的阻断问题。








