mcpField
U
ux-modals-and-dialogs

ux-modals-and-dialogs

github.com/uxcel-lab设计与 UI3699 次安装17 周前更新
代码仓库

关于 ux-modals-and-dialogs

面向 UI 设计任务的生成式技能,帮助判断何时使用模态框,并设计其内容与交互。它强调中断是否合理、操作目的是否清晰,以及用户能否轻松退出。

主要功能

  1. 01判断模态框是否适用于当前情境
  2. 02撰写明确标题与操作按钮
  3. 03规划关闭方式和焦点管理
  4. 04根据任务选择弹窗、全屏或操作表
  5. 05建议启用 UX 审查技能进行验证

适用场景

  1. 01确认删除或放弃草稿等不可逆操作
  2. 02呈现继续任务所必需的信息
  3. 03为移动端操作列表选择操作表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/uxcel-lab/product-skills --skill ux-modals-and-dialogs

安装后在 Claude Code 中输入/ux-modals-and-dialogs确认已加载。

详细介绍

模态框与对话框技能

此技能的工作方式(请先阅读)

这是一项生成式技能。默认的失败模式包括:事事打断用户(成功消息、提示、新闻简报都用模态框,仿佛注意力取之不尽)、困住用户(没有明显的关闭方式、不支持 Esc、层层叠加模态框),以及含糊不清的选项(“确定吗?”→ 是/否)。模态框会挟持整个界面——只有在高风险时刻才值得这样做,而代价必须通过目的明确、退出轻松来弥补。此技能设有以下关卡:

  1. 把关是否打断——这里真的有必要使用模态框吗?最重要的决定在任何设计开始之前就要做出。
  2. 应用始终适用的核心原则——标题说明目的、按钮含义明确、易于关闭、妥善管理焦点。
  3. 明确类型和时机的选择(弹窗/全屏/弹出层/底部弹出表单、权限请求预热),并权衡利弊。

随后将交由 ux-heuristics-audit、ux-accessibility-audit、ux-aesthetics-audit、ux-microcopy-audit 和 ux-dark-patterns-audit 进行验证。


步骤 0 — 把关是否打断(最重要的决定)

模态框会阻断所有操作。只有在高风险时刻才值得使用:

  • 确认破坏性或不可逆的操作(删除帐户、丢弃草稿)——说明影响(“将删除 12 个文件”)。
  • 严重错误或警告(系统重启、未保存的更改面临丢失风险)。
  • 继续当前任务所必需的信息(登录后才能保存、付款详情)。

其他情况——成功消息、提示、告知信息、促销内容——都应使用非模态模式:行内消息、轻提示、横幅、弹出层。此外还要明确:

  • 由谁触发? 用户主动触发的模态框(点击按钮)符合预期;系统主动触发的模态框(定时弹窗、催促升级的提示)会毫无预警地打断用户——除非确实紧急(会话过期、关键更新),否则应避免。
  • 时机——绝不要打断正在进行的高风险流程(结账途中是典型反面案例)。
  • 平台——遵循桌面端警告框与 iOS 警告框/Android 对话框的惯例;移动端操作列表应使用底部弹出表单/操作表单。

如果内容未通过高风险测试,请停止设计模态框,改用行内消息/轻提示。


始终适用的核心原则(适用于所有通过关卡的模态框)

目的、标题与按钮
  • 标题应传达完整信息——用户可能会快速浏览或跳过正文。“丢弃草稿?”而不是“警告。”正文补充原因和背景;任何关键信息都不能只放在正文里。
  • 按钮标签应明确回应标题: ❌“是”/“否”/“取消” ✅“丢弃草稿”/“继续编辑”。用户无需阅读其他内容,就必须知道每个按钮的作用。
  • 最多两个操作按钮。 第三个按钮(“了解更多”)会让用户偏离当前决策。
  • 不要在退出选项标签中责怪或羞辱用户(“不了,谢谢,我讨厌省钱”→ 标记为暗黑模式)。
关闭是一项权利,而非一项功能
  • 提供多个明显的退出方式: 关闭/取消按钮 + 角落里的 × + 桌面端按 Esc/移动端返回。
  • 点击/轻触外部区域即可关闭——前提是不会丢失已输入的数据;只有在关闭会导致工作内容丢失时才禁用此行为。
  • 绝不叠加模态框。 在模态框上再开一个模态框,就像挟持事件中又多加了几道关卡。
焦点与注意力机制
  • 在模态框后方添加深色遮罩——聚焦注意力、阻止与外部交互,并可作为关闭区域。
  • 打开时将键盘焦点移入模态框(聚焦主操作);所有控件都必须可通过键盘访问。
  • 居中放置——移动端正中;桌面端水平居中并略高于垂直中心(调整窗口大小时保持稳定)。
  • 严重警告应有严重警告的样式: 对于破坏性/紧急确认,使用红色强调色和警告图标,避免习惯性操作的用户不假思索地关闭提示。

依赖上下文的决策(呈现出来,不要自动应用)

决策适用情况避免/调整的情况默认建议
弹出式模态框遮罩内容上方用于打断用户的标准高风险提示需要整页展示的内容默认模态框类型
全屏模态框复杂、需要专注的任务:多步表单、付款、条款与条件、移动端聚焦时刻简单确认(过度设计);用户可能需要快速退出的任何情况——应让关闭方式一目了然仅当任务确实需要占满整个屏幕时使用
弹出框锚定在某个元素上的补充详情/选项,不阻挡页面关键信息(太容易被忽略)情境化帮助的非模态默认方案
灯箱放大图片/视频并提供导航、说明文字、缩放非媒体内容仅用于媒体内容丰富的产品
底部操作面板(移动端)按操作系统惯例展示相关操作或分享目标列表关键确认(使用警报/对话框)操作列表使用 Android 底部操作面板/iOS 操作面板
成功反馈行内或页面内状态成功模态框——打断用户只为告知“操作成功”仅当用户必须确认后才能继续时,才使用成功模态框
权限请求在功能需要权限的情境下提出;先用权限说明进行预先铺垫;一次请求一项权限;给出充分理由(授权可能性提高 81%)首次启动时、批量请求、使用“推荐”等施压标签,或任务进行中预先铺垫 → 情境化请求 → 提供妥善撤销拒绝操作的途径
系统主动发起的模态框真正紧急的情况:会话过期、安全问题、数据丢失订阅催促、限时促销、索要评分几乎绝不使用;改用横幅/徽章

验证结果(编排)

交接时,请使用各审核视角对应的可安装技能 name。只有在该技能已安装时才调用;如果未安装,本技能的核心规则已涵盖这些要求——继续处理即可,不要因此阻塞。

生成或修订后,应将结果交由审核视角检查,而不是直接宣布完成。这些都是候选审核视角——具体执行方式由 docs/orchestration-policy.md 决定,也可以将整个内容交由 ux-design-review 审核。此处,heuristics、microcopy 和 dark-patterns 属于 A 级(自动运行);accessibility、aesthetics 和 mobile-responsiveness 属于 B 级(可选)——在现有设计系统下,aesthetics 不予审核,accessibility 的范围会缩小到使用方式;mobile-responsiveness 仅适用于移动端。如果用户调用此技能是为了处理某个特定事项,应尊重其范围。

  • ux-heuristics-audit (A 级)——用户控制权与自主性(退出方式)、错误预防(明确确认)、符合预期(平台惯例)。
  • ux-accessibility-audit (B 级——可选;在设计系统下缩小范围)——焦点陷阱是否正确、键盘关闭方式、屏幕阅读器播报、遮罩内容的对比度。
  • ux-aesthetics-audit (B 级——可选;在设计系统下不予审核)——模态框的视觉层次、遮罩处理、警报样式的克制程度。
  • ux-microcopy-audit (A 级)——标题是否清晰、按钮说明是否明确、正文是否简洁、权限请求理由的措辞。
  • ux-dark-patterns-audit (A 级)——本技能涉及的中断行为属于暗黑模式的高发领域:系统模态框的反复催促、羞辱式退出选项、权限施压、难以找到的关闭方式。
  • ux-mobile-responsiveness-audit (B 级——可选;仅适用于移动端)——在移动端情境下检查操作面板惯例、关闭手势和全屏行为。

如果审核发现冲突(例如,增长团队希望页面加载时弹出注册模态框,而用户控制权要求避免打扰),应优先保障主要任务:用户正在做某件事——模态框必须保护该任务,或者为其让路。


常见的正确做法与错误做法

❌ 不要这样做✅ 应该这样做
用模态框显示成功消息或提示使用内联状态 / toast;仅在涉及重大事项时使用模态框
用户阅读到一半时弹出限时订阅窗口由用户主动触发模态框;仅在情况紧急时由系统中断
“确定吗?”→“是” / “否”“放弃草稿?”→“放弃” / “继续编辑”
三个或更多按钮,包括“了解更多”提供两个与标题相呼应的操作
没有 ×、不支持 Esc、点击外部无法关闭提供关闭按钮 + Esc / 返回键 + 点击外部关闭(安全时)
在另一个模态框上方打开模态框一次只显示一个模态框
关键信息埋在正文里在标题中传达核心信息
首次启动时批量请求权限做好铺垫,在恰当的上下文中逐项请求,并说明原因
“不了,谢谢,我就喜欢错过”使用中立、尊重用户的拒绝选项文案
焦点停留在模态框后面的页面上将焦点移入模态框,并置于主要操作上
未经检查就发布依据启发式原则、无障碍性、美观度、微文案和暗黑模式进行检查

来源课程(Uxcel)

评论

支持 Markdown