2.5[frontEnd]

requestAnimationFrame 是 浏览器原生 API ,定义在 window 对象中,属于 Web API 的一部分。无需任何导入即可直接使用,其类型定义包含在 TypeScript 标准库中。

  1. React 组件挂载时执行该 useEffect

  2. 初始化节流计时器 lastEmit 和 25ms 触发间隔

  3. 绑定 mousemove 事件监听器

  4. 事件触发时通过时间

  5. 作用:定义基础色相值 (0-360)

  6. 技术原理 :

    在后续样式通过 hsl(var(--hue), 饱和度, 明度) 生成颜色

    (例:hsl(120, 95%, 70%) = 高饱和度绿色)

  7. 差实现节流控制

参数 作用 值域
spark-emit 指定关键帧动画名称 自定义动画
${lifeTime}s 动画持续时间 0.4-1秒
ease-out 缓动函数 (先快后慢) 贝塞尔曲线
forwards 保持动画结束状态 防止回弹

motion.nav 是 Framer Motion 库提供的一个组件,用于为 HTML 元素(这里是 <nav>)添加动画效果

  • transform 是 CSS 中用于对元素进行变换的属性,支持平移(translate)、旋转(rotate)、缩放(scale)等操作。

  • 与直接修改 left 和 top 不同,transform 不会触发浏览器的重排(reflow),而是触发重绘(repaint),因此性能更高。

  • 修改 opacity 只会触发重绘(repaint),而不会触发重排(reflow),因此性能较高。

.element {

transform: translate(100px, 50px); /* 将元素向右移动 100px,向下移动 50px */

}

  1. 重排(Reflow):

    • 当元素的几何属性(如 width、height、left、top 等)发生变化时,浏览器需要重新计算元素的布局,这个过程称为重排。

    • 重排是非常耗性能的操作,尤其是在频繁修改布局属性时。

  2. 重绘(Repaint):

    • 当元素的非几何属性(如 color、background-color、opacity 等)发生变化时,浏览器只需要重新绘制元素,而不需要重新计算布局,这个过程称为重绘。

    • 重绘的性能开销比重排小得多。

  3. 合成(Composite):

    • 当使用 transform 和 opacity 时,浏览器会将元素提升到一个单独的图层(layer),并在 GPU 中进行合成。

    • 这种方式可以避免重排和重绘,性能最高。

百分比(%)的含义

  • 参考系 :translate 中的百分比是基于 元素自身的尺寸。

    • 例如,translate(50%, 50%) 表示元素在水平方向上移动自身宽度的 50%,在垂直方向上移动自身高度的 50%。
  • 行为:

    • 如果元素的宽度是 100px,高度是 50px,那么 translate(50%, 50%) 会将元素向右移动 50px,向下移动 25px。

    • 百分比的值是动态的,会随着元素尺寸的变化而变化。

像素(px)的含义

  • 参考系 :translate 中的像素是基于 固定的像素值。

    • 例如,translate(100px, 50px) 表示元素在水平方向上移动 100px,在垂直方向上移动 50px。

motion.nav

├── div (容器)

│ ├── a (Logo)

│ ├── div (桌面导航)

│ │ └── a*4 (导航项)

│ └── button (移动端菜单按钮)

└── div (移动端菜单)

└── a*4 (导航项)

dragConstraints 是 Framer Motion 中的一个属性,用于定义拖动组件时的边界限制。它决定了组件在拖动时可以移动的范围。

相关推荐
锋行天下13 分钟前
DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道
前端·人工智能·后端
jktantan28 分钟前
每个节点 41 字节:把一棵百万节点树拆进 14 个 typed array
前端·javascript·vue.js·算法·typescript
计算机魔术师1 小时前
Anthropic官方插件被「寄生」,背后是同一类攻击又来了
前端
我命由我123451 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
key_3_feng1 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
LaughingZhu2 小时前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion
Lank_M2 小时前
抠图结果缩放后边缘发脏,该怪的不是插值
前端
jerrywus2 小时前
Skill、MCP、Workflow、Rules、Memory 有什么区别?拿几次真实开发任务讲清楚
前端·agent·claude
补码缩写2 小时前
canvas 与 sharp 缩放透明图:默认预乘,非预乘得拆通道
前端
静默回滚2 小时前
抠图 PNG 缩小再放大,边缘又糊又白是两件事
前端