在 Web 开发中,悬浮提示(tooltip)能够提供用户友好的提示信息而不占用界面空间。tippy.js 是一款以轻量、高性能和灵活定制著称的 JavaScript 悬浮提示库,为开发者带来优雅、高效的交互体验。
什么是 tippy.js?
tippy.js 是一款建立在 Popper.js 之上的轻量悬浮提示、弹出菜单、下拉菜单库。它具有智能定位、性能优异、动画丰富、支持 HTML 内容、WCAG 无障碍兼容、多平台触控响应等特点,非常适合用于现代 Web 项目中。
为什么选择 tippy.js?
- 轻量高效:结构简洁,不影响页面加载速度。
- 高度灵活:支持任意 HTML 内容,可嵌套提示层,并支持主题、动画、触发条件等自定义。
- 智能定位:依托 Popper.js 实现自动翻转与防止脱离视口。
- 无障碍兼容:支持键盘导航、ARIA 属性,适配触屏用户。
- 广泛支持:兼容 IE11+、主流桌面与移动浏览器,适用场景广泛。
安装方式
通过 npm 或 Yarn 安装:
npm i tippy.js
# 或
yarn add tippy.js
然后引入代码与 CSS:
import tippy from 'tippy.js';
import 'tippy.js/dist/tippy.css';
通过 CDN 引入(适用于静态页面):
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
前者会自动注入核心 CSS,而在启用了 CSP 的环境下,你可以手动链接 tippy.css 文件。
快速上手示例
在 HTML 中简单创建一个按钮:
<button id="myButton">Hover me</button>
然后使用以下 JavaScript 初始化提示:
tippy('#myButton', {
content: "I'm a Tippy tooltip!"
});
默认情况下,提示会在鼠标悬停或触控时出现,并带有淡入动画和箭头样式。
你还可以指定提示位置:
tippy('#myButton', {
content: "Hello, Tippy!",
placement: 'bottom-start'
});
支持位置包括 top, bottom, left, right,以及加上 -start / -end 的变体。
常用高级功能示例
延迟显示:
tippy(button, {
content: "Wait for it…",
delay: 500 // 500ms 后显示
});
追踪鼠标:
tippy(button, {
content: "I'm following you!",
followCursor: true
});
共享单个提示实例:
当你希望多个元素共用一个提示效果,避免 DOM 冗余时可以使用:
tippy.createSingleton(tippy(buttons), {
delay: 500
});
嵌套提示:
你可以在提示内部再启动另一个提示,实现层级交互效果(如菜单结构)。
这仅是功用冰山一角,文档中还提供更多动画、生命周期钩子、事件回调、HTML 内容、主题扩展等配置项。
在框架中如何使用
- React 集成:使用官方 @tippyjs/react 实现组件化调用。
- Vue 集成:可通过 vue-tippy 或原生方式结合指令使用。
- Svelte 集成:通过自定义 action 方式挂载提示实例。
这些框架封装可以使提示高度契合组件结构与数据管道,提升开发体验。
总结
tippy.js 是一款轻量、灵活、功能强大的 JavaScript 悬浮提示解决方案,适用于提升 Web 应用的用户交互品质。无论是基础用法,还是丰富动画与嵌套交互,它都能轻松胜任。入门门槛低,上手简单;进阶丰富,灵活强大。在现代 Web 项目中,使用 tippy.js 可让界面更直观、更有趣、更专业。