如何使用 Floating-UI 打造 Tooltip 组件
2023/07/06 00:00:00
用户体验
front-end
Floating-UI 是一个库,可帮助您创建“浮动”元素,例如工具提示、弹出框、下拉列表等。

背景

notion image
Floating-UI 是一个库,可帮助您创建“浮动”元素,例如工具提示、弹出框、下拉列表等。
简而言之就是可以通过 floating-ui 去关联 DOM 节点去很好的管理弹窗类、浮层类组件,从而你无需再去关注边缘判断、滚动冲突等常见浮动问题。
那么,如何开始呢?首先需要在项目中安装 floating-ui
然后就可以开始我们的旅程了。

构思

首先我们需要明确一个 Tooltip 组件的预期功能是什么样的。
notion image
  • 鼠标 hover 到指定元素上,弹出提示内容,一般来说,内容里面是一段文本。
    • 也有很多是在展示富文本,但是很少见在 Tooltip 中去展示复杂类型内容的,如果是复杂类型,其实就得考虑换交互组件了,而不是强堆。我们在这里只需要支持用户去传递 React.Element 即可。
  • 被指定元素可以是任何元素。
  • 弹出层需要解决边缘判断、滚动冲突等问题。
    • 这个就是我们今天的主角 floating-ui 来发挥作用了。

开发

在开发之前可以先去阅读官方给出的两个 Demo

伪代码

在这里我们支持了一个 title 属性来接收用户传递进来需要展示在 Tooltip 中的内容, Children 用来表示被指定的元素。

真实代码

到这里就全部实现啦~
notion image

相关资料