DESIGN NOTES
为什么值得收藏
- 双轴曲线分层动画拆两层:横向 translateX 匀速 linear,纵向 translateY 缓出 ease-out,两轴合成自然抛物线弧线
- 伴随缩放淡出飞行过程中卡片 scale 从 1 缩至约 0.2,opacity 渐隐,整体时长 300-400ms,终点对准角标位置
- 避免单轴瞬移感单条 transform 写不出弧线,必须用嵌套元素分别承担 X/Y 轴动画
UI 组件
结合原始资料,按需应用到自己的设计中。
实现一个归档抛物线飞入动效(原生 HTML/CSS/JS,零依赖,单文件交付): 【效果描述】用户点击卡片上的"归档"按钮后,该卡片生成一个飞行副本,沿自然抛物线弧线飞向页面右上角的归档角标:飞行中副本从 scale 1 缩小至 0.2 并渐隐,命中角标后副本消失、角标轻微弹跳提示、源卡片从列表中移除。弧线不是直线瞬移,而是"先抛起后落下"的曲线轨迹,视觉上符合物理直觉。 【交互参数】 - 触发条件:点击卡片内 .uw-archive-btn;目标为页面中带有 data-archive-target 属性的角标元素 - 动画拆解:外层元素承担 translateX,animation 300ms linear;内层元素承担 translateY,animation 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94)(ease-out 类缓出,先快后慢形成弧线);缩放与透明度作用于内层,scale 1 → 0.2、opacity 1 → 0,同 300ms 同步执行;总时长可在 300-400ms 区间调节(注释标出) - 轨迹计算:起飞前用 getBoundingClientRect() 分别取源卡片中心点与角标中心点,差值作为 X/Y 轴终点位移;纵向建议额外加 -40px 的初始上抛偏移增强弧线感(可调) - 角标反馈:副本消失后角标执行一次 scale 1 → 1.3 → 1 的 200ms 弹跳 - 边界情况:角标不在视口内时仍以其实际坐标飞行(允许飞出屏幕);连续快速点击多张卡片时各自独立生成副本并行飞行,互不干扰;prefers-reduced-motion 时跳过飞行动画,卡片直接移除、角标仅做不带动画的数字更新 【使用示例】 1. 消息归档:列表项 <div class="uw-card"><span>消息内容</span><button class="uw-archive-btn">归档</button></div>,页头放 <div class="uw-badge" data-archive-target>归档箱 <i class="uw-count">3</i></div>,点击后卡片飞入角标且计数 +1 2. 加入购物车:将角标换成购物车图标(data-archive-target 不变),副本内容可替换为商品缩略图 <img>,飞行视觉元素由 flyContent 工厂函数返回,可按项目替换为任意节点 【实现要点】 1. 点击时克隆源卡片(或调用 flyContent 工厂)生成副本,position: fixed 定位到源卡片坐标,pointer-events: none,加入高 z-index 层 2. 副本采用嵌套结构:<div class="uw-fly-x"><div class="uw-fly-y">内容</div></div>,外层只写 translateX 动画,内层只写 translateY + scale + opacity 动画——单条 transform 无法合成弧线,必须双轴分层 3. 通过 CSS 自定义属性 --uw-fly-x / --uw-fly-y 把 JS 算出的终点位移注入 keyframes(用 Web Animations API 的 element.animate() 更简洁,可二选一,注释说明) 4. 内层动画 onfinish 后:移除副本 DOM → 触发角标弹跳 class(uw-badge-pop,animationend 后移除)→ 更新计数 → 源卡片执行 200ms 高度收缩淡出后从 DOM 删除 5. 所有 keyframes 与类名集中定义,类名均以 uw- 开头 【质量要求】不污染全局样式、类名加 uw- 前缀;prefers-reduced-motion 时禁用动画;注释标出可调参数(总时长、上抛偏移量、终点缩放值、角标弹跳幅度) 【参考资源】 - 资料详情:https://ui.undoai.cn/components/parabola-archive-fly/ - 效果快照:https://ui.undoai.cn/components/parabola-archive-fly/cover.png - Demo 源码:https://ui.undoai.cn/components/parabola-archive-fly/demo.html
将提示词与你的页面背景、技术栈和目标尺寸一起交给代码助手。实现后对照原图检查布局和状态,再验证键盘、触控和减少动态效果。
展开后加载源代码
查看 Markdown 全文,复制或下载 design.md 后交给开发者使用。
# 归档抛物线飞入 — design.md 内容版本:sha256:72cdd5e230ed8588b3f3e061cff10596c0aaf926cc0b1bf70e12a1e5b3de7a54 本文件由当前元数据、实现摘要和实际文件列表确定性生成。元数据记录是资料声明;未提供的数值不作推断。实现建议须在后续开发中选择和验收。 ## 元数据记录 - 资产:components/parabola-archive-fly;语义类型:interaction。 - 分类:交互模式。 - 标签:抛物线动画、双轴分层、缩小淡出、角标目标。 - 场景:消息归档、加入购物车飞入、收藏动效、删除回收。 - 平台:未提供。 - 风格:未提供。 ### 亮点声明 - 双轴曲线分层:动画拆两层:横向 translateX 匀速 linear,纵向 translateY 缓出 ease-out,两轴合成自然抛物线弧线 - 伴随缩放淡出:飞行过程中卡片 scale 从 1 缩至约 0.2,opacity 渐隐,整体时长 300-400ms,终点对准角标位置 - 避免单轴瞬移感:单条 transform 写不出弧线,必须用嵌套元素分别承担 X/Y 轴动画 ### 实际文件与参考资源 - `cover.png`(sha256:2341dbbfa04e4b7573ec54ffb006efe5d71122b488c381f3fea5b182d54bfe92) - `demo.html`(sha256:8e2df8a70af698235a40d1eb01d33b2973bb1710c549ddb9f0f72adb83dc6740) - `meta.yml` - 实现摘要:sha256:8e2df8a70af698235a40d1eb01d33b2973bb1710c549ddb9f0f72adb83dc6740。 ## 未提供 - 未结构化记录的精确色值、字号、间距、断点、动效时长与状态转换参数不作推断;亮点中的数值属于元数据声明,demo 的存在与摘要不代表浏览器行为已验收。 ## 实现建议 - 按正常、悬停、聚焦、激活、禁用、加载、成功和错误状态定义适用的状态表。 - 使用语义化元素,验证键盘操作、焦点可见性、触控目标和减少动效偏好。 - 以 demo.html 为实现参考,逐项验证交互、窄屏布局、文本溢出和错误恢复;具体参数由实现与验收确认。
在完整提示词后补充你的要求;生成提示词不会创建新资产。
DESIGN NOTES
GOOD FOR