Agent Skills
返回列表
下拉气泡定位

下拉气泡定位

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/ojvj2026135 到你的 AI 助手中,以便使用下拉气泡定位能力。

技能介绍

解决什么具体问题

当你在按钮旁渲染自定义下拉菜单或自研气泡时,直接写死 top:100% 很容易在贴底时被窗口裁切;当浮层靠边时,固定偏移也会导致内容超出可视区域。手动计算坐标还要处理滚动、resize 后的重排,逻辑分散且容易遗漏边界情况。

技能如何工作

这个技能只聚焦一个职责:锚点与浮层元素的定位计算。它依赖 @floating-ui/dom 的 computePosition 得到相对坐标,再把结果写入浮层的 top / left。核心步骤包括:

  • 打开下拉或气泡后调用 placeFloating(btn, menu) 触发一次定位。
  • 监听滚动和 resize,并做节流重算,避免频繁布局抖动。
  • 开启 flip 能力,当空间不足时自动把浮层翻到锚点另一侧。
  • 开启 shift 能力,让浮层沿边缘平移,防止被屏幕或容器裁切。

典型适用场景包括:自定义下拉菜单贴按钮定位、Demo 字段旁的轻量 Popover、以及任何需要“锚点 + 浮层”关系的局部浮层。

适用边界与注意点

技能明确不做完整 Headless UI 套件,也不提供焦点陷阱、键盘导航等交互层逻辑;如果你需要无障碍菜单或表单联动,需要自行补齐。实现时必须引入 @floating-ui/dom,而不是用 top:100% 硬编码后声称已使用 Floating UI。

另外,避免与 tippy 等成熟气泡库在同一场景重复造两套定位逻辑。滚动和 resize 的重算应做节流,否则连续滚动可能引发不必要的 computePosition 调用。代码中涉及原创实现的要点建议用 小四原创 注释标出,便于后续维护和追溯。

使用场景

  • 在按钮旁渲染自定义下拉菜单时,需精确计算浮层位置避免被窗口裁切
  • 自研Popover组件开发中,需要根据锚点元素动态调整浮层方向和偏移量
  • 表单字段旁悬浮提示层实现时,要求气泡随滚动和窗口变化自动重定位
  • Demo页面展示表单组件时,需要为每个输入框添加贴边的轻量浮层说明

适合人员

  • 前端工程师,需要为按钮旁的自定义下拉菜单计算精确位置,避免浮层被窗口裁切
  • 交互组件开发者,正在自研Popover组件,需要根据锚点动态调整浮层方向和偏移量
  • 表单设计人员,需要在Demo页面为每个输入框添加贴边的轻量浮层说明,并确保滚动时自动重定位
  • 前端架构师,正在评估浮层定位方案,需要验证Floating UI在滚动和resize场景下的节流重算能力