Floating UI

为 Tooltip / Popover / Dropdown 等浮动组件设计的工具库
GitHub 访问主页

功能场景分析

Floating UI 是一个轻量级的 JavaScript 库,专为创建和管理浮动元素设计,如工具提示(tooltips)、弹出窗口(popovers)、下拉菜单(dropdowns)等。它提供了核心的定位功能,允许开发者将浮动元素精确地锚定到页面上的任何元素,同时处理滚动、视口边界等问题 。

兼容和稳定性分析

Floating UI 支持跨平台使用,不仅限于 DOM,可以在原生 JS、React、React Native 等环境中使用。它由 Popper 团队开发,是 Popper v2 的升级版本,提供了更小的体积和更好的性能,支持 Tree-shaking 来减少最终打包文件的大小 。

优缺点总结

优点:

  • 轻量级,体积小,只有几百字节,加载速度快 。
  • 高度模块化,支持 Tree-shaking,按需加载,有助于控制最终打包体积 。
  • 提供了中间件机制,支持按需引用和自定义中间件,提高了灵活性 。
  • 支持 TypeScript,提供更清晰的类型定义和更好的自动完成支持。
  • 良好的文档和示例,易于学习和使用 。

缺点:

  • 相比于一些“开箱即用”的解决方案,Floating UI 更偏向于提供一个底层的实现,可能需要更多的配置和代码来实现特定的 UI 组件 。
  • 作为一个新的库,可能在社区支持和第三方集成方面不如一些成熟的库。

示例代码

以下是使用 Floating UI 创建一个简单工具提示的示例代码:

import { computePosition } from '@floating-ui/dom';

const button = document.querySelector('#button');
const tooltip = document.querySelector('#tooltip');

computePosition(button, tooltip).then(({ x, y }) => {
  Object.assign(tooltip.style, {
    left: `${x}px`,
    top: `${y}px`,
  });
});

这段代码将按钮元素和工具提示元素作为参数传递给 computePosition 函数,计算后的工具提示位置通过 Promise 异步返回,并设置到工具提示元素的样式上 。

推荐理由

Floating UI 是一个现代化的库,它提供了灵活、高效和可定制的方式来创建和管理浮动 UI 元素。它的跨平台能力、轻量级特点和模块化设计使其成为现代 web 开发的一个优秀选择。如果你正在寻找一个易于集成、性能优异且不牺牲灵活性的浮动元素解决方案,那么 Floating UI 是一个很好的选择 。

预览图片