بنقرة واحدة
fullscreen-dialog-portal
当 cook-web 页面在浏览器 fullscreen 场景下需要展示基于 Dialog 的支付弹窗、设置弹窗或业务弹层时,使用本技能排查 portal 容器是否落在全屏节点外。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
当 cook-web 页面在浏览器 fullscreen 场景下需要展示基于 Dialog 的支付弹窗、设置弹窗或业务弹层时,使用本技能排查 portal 容器是否落在全屏节点外。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
当 cook-web 需要调整 Next.js App Router 全局或路由级错误兜底页时使用本技能。错误页应直接展示错误名称、message、digest、cause、URL 和可用 stack,避免只提示用户查看控制台。
当修复 ai-shifu 聊天页在移动端与桌面端布局判定不一致的问题时使用本技能。基于真实可见视口宽度而不是仅 `#root.clientWidth` 计算 `frameLayout`,在 `resize` 与 `visualViewport.resize` 时同步,并在断点纠正后关闭过期的移动端抽屉状态。
当处理听课模式的流式音频、buffering、TTS 请求门禁与播放连续性问题时使用本技能。统一音频来源选择、分段合并策略和请求触发时机。
当 ai-shifu 聊天流从 block 粒度向 element 粒度演进,或历史记录与 SSE 渲染一致性出现问题时使用本技能。统一 element_bid 渲染键、兼容旧字段并收敛 AskBlock 归并逻辑。
当 learner 端听课模式需要接入 markdown-flow-ui 的移动端播放器新能力时使用本技能。覆盖横竖屏状态透传、自定义横屏 header、以及播放器文案国际化接入。
当 cook-web 需要新增共享 loading 动画时,使用本技能统一公共组件目录、非破坏性导出方式,以及圆点序列动画的可配置实现。
| name | fullscreen-dialog-portal |
| description | 当 cook-web 页面在浏览器 fullscreen 场景下需要展示基于 Dialog 的支付弹窗、设置弹窗或业务弹层时,使用本技能排查 portal 容器是否落在全屏节点外。 |
Dialog 的弹层若仍 portal 到 document.body,就会出现“状态已打开但界面看不到”的现象。document.fullscreenElement 监听逻辑。container,fullscreen 自动兜底必须保留显式覆盖能力,避免影响已有定制挂载点。body 导致闪烁或不可见。Dialog,像追问浮层、评分卡片、引导卡片这类普通业务浮层若定位依赖 absolute/fixed,在 fullscreen 下也要确认它们是否仍渲染在 fullscreen 视口树内;若不是,同样需要 portal 到 slide__viewport 之类的宿主节点。src/components/ui/Dialog.tsx 的基础弹窗默认要保留稳定的视口边距,优先在通用 DialogContent 上统一约束宽度,而不是在每个业务弹窗里分别补 w-[calc(100vw-32px)]。Dialog 的遮罩层级要高于听课 slide 内部 loading / ask / interaction 这类局部浮层;若 slide 局部浮层使用 z-[91] 一类层级,通用 Dialog 遮罩和内容应在封装层统一使用更高层级,避免业务弹窗被 slide 区域盖住或糊住。src/components/ui/Dialog.tsx 这类通用封装,而不是业务侧自己 createPortal。DialogPortal 的 container 是否仍为空,导致默认挂到 body。fullscreenchange 监听,并保留外部 container 的覆盖入口。