Floating UI
用于定位浮动元素并为其创建交互的 JavaScript 库。
解决浮动元素(工具提示、弹出框、下拉菜单等)的定位与交互难题。提供智能锚点定位、视口冲突避免、树摇优化等特性,支持 Web、React、React Native、Vue 及 Canvas 环境。
| 收费 | 免费开源 |
|---|---|
| 平台 | Web / React / React Native / Vue / Canvas |
| 中文 | 有中文官网(floating.nodejs.cn) |
| 用途 | 定位浮动元素并创建交互 |
Floating UI 提供 computePosition 等底层 API,支持 12 种 placement 方向(如 top-start、bottom-end),并通过中间件实现高级行为。
@floating-ui/react 包提供无头 Hooks 和组件,用于构建可访问的浮动交互组件,不提供预构建 UI,强调开发者控制权。
Floating UI 采用纯模块化设计,每个中间件均可单独树摇,核心 computePosition 仅 0.6 kB,DOM 平台额外 2.5 kB。
Floating UI 由 Popper 团队开发,是 Popper v2 的演进版本,但并非简单替代。
Q1:Floating UI 和 Popper 是什么关系?我应该迁移吗?
A1:Floating UI 由 Popper 团队开发,是 Popper v2 的演进版本。核心优势:体积更小(0.6 kB vs 3 kB)、支持树摇、跨平台(React Native、Canvas)。如果项目已用 Popper 且无性能或跨平台需求,可不迁移;新项目建议直接使用 Floating UI。
Q2:Floating UI 的 React 包和 @floating-ui/react-dom 有什么区别?
A2:@floating-ui/react-dom 仅提供定位功能(useFloating),体积更小;@floating-ui/react 包含完整交互工具包(useHover、useClick、useDismiss 等 20+ Hooks 和组件)。如果只需定位(如简单工具提示),用 react-dom;如需复杂交互(组合框、下拉菜单),用 react。
Q3:Floating UI 如何实现鼠标跟随定位?
A3:使用虚拟元素功能:将鼠标坐标(如 event.clientX, event.clientY)作为参考元素传入 computePosition 或 useFloating 的 reference 参数,即可实现浮动元素跟随鼠标移动。官网示例中「移动你的鼠标」Tooltip 即基于此实现。
更多同类工具与网站,可在动画库分类继续挑选。
信息核实于 2026年7月,具体以官网为准。
评论
暂无评论