弹窗打开后,用 Tab 键焦点却跑到了后面页面去了,关不掉也点不到
焦点陷阱
Focus Trap
反模式弹窗打开后 Tab 焦点能跑到遮罩后的页面元素,键盘用户被困住
正解弹窗内循环 Tab 焦点,只在该层内移动,关闭后焦点回到触发元素
在线对比体验 · 同一个需求,大白话 vs 平台提示词,效果立分高下 · 右边可点击体验
大白话直接生成
Tab 焦点跑到遮罩外了
平台提示词生成
点一下试试
差在哪?大白话没讲「弹窗打开后 Tab 焦点能跑到遮罩后的页面元素,键盘用户被困住」,AI 只能自己猜;平台提示词写明「弹窗内循环 Tab 焦点,只在该层内移动,关闭后焦点回到触发元素」,还带要点与三端注意,一次到位不用返工。
代码示例
不同平台注意
网页监听 keydown Tab 控制焦点范围
App模态自动接管焦点
小程序弹层内 focus 管理
可直接复制的提示词(三端都给你,挑对应平台复制给 Cursor / 通义灵码 / Claude)
网页 Web
你是一位资深前端工程师。我想实现【焦点陷阱】(专业术语:Focus Trap)。
【我想达到的效果】弹窗打开后,用 Tab 键焦点却跑到了后面页面去了,关不掉也点不到。
【请避免的反模式】弹窗打开后 Tab 焦点能跑到遮罩后的页面元素,键盘用户被困住。
【正确做法】弹窗内循环 Tab 焦点,只在该层内移动,关闭后焦点回到触发元素。
【平台】网页 Web(标准 HTML/CSS/JS,单文件零依赖,不引任何 CDN)。
【提示词要点】
- 弹窗内首个可聚焦元素自动聚焦
- Tab/Shift+Tab 在层内循环
- Esc 关闭并归还焦点
- 关闭后焦点回到原触发元素
请输出完整可运行代码(关键处写中文注释),并附 50 字以内使用说明。
手机 App
你是一位资深前端工程师。我想实现【焦点陷阱】(专业术语:Focus Trap)。
【我想达到的效果】弹窗打开后,用 Tab 键焦点却跑到了后面页面去了,关不掉也点不到。
【请避免的反模式】弹窗打开后 Tab 焦点能跑到遮罩后的页面元素,键盘用户被困住。
【正确做法】弹窗内循环 Tab 焦点,只在该层内移动,关闭后焦点回到触发元素。
【平台】手机 App(React Native / Flutter / 原生,给出对应组件与关键代码)。
【提示词要点】
- 弹窗内首个可聚焦元素自动聚焦
- Tab/Shift+Tab 在层内循环
- Esc 关闭并归还焦点
- 关闭后焦点回到原触发元素
请输出完整可运行代码(关键处写中文注释),并附 50 字以内使用说明。
微信小程序
你是一位资深前端工程师。我想实现【焦点陷阱】(专业术语:Focus Trap)。
【我想达到的效果】弹窗打开后,用 Tab 键焦点却跑到了后面页面去了,关不掉也点不到。
【请避免的反模式】弹窗打开后 Tab 焦点能跑到遮罩后的页面元素,键盘用户被困住。
【正确做法】弹窗内循环 Tab 焦点,只在该层内移动,关闭后焦点回到触发元素。
【平台】微信小程序(WXML/WXSS/JS,注意 rpx 单位与小程序专属约束)。
【提示词要点】
- 弹窗内首个可聚焦元素自动聚焦
- Tab/Shift+Tab 在层内循环
- Esc 关闭并归还焦点
- 关闭后焦点回到原触发元素
请输出完整可运行代码(关键处写中文注释),并附 50 字以内使用说明。