web design uiOctober 30, 20266 min read

模态框 vs 底部弹层:移动应用中该用哪个

模态框会拦住人,底部弹层让人继续浏览。一个问题就能在两者之间做出决定,附两种模式的重新设计、十个常见场景的决策表,以及背后的平台规范。

By Boone
XLinkedIn
Modal vs Bottom Sheet: When to Use Each in a Mobile App

模态框和底部弹层都会滑过屏幕,所以很多团队把它们当成同一个东西,只是形状不同。其实不是。一个会拦住用户直到他们作答,另一个让用户选完就继续。下面是决定用哪个的那个问题,两种模式的重新设计,以及每个应用都会遇到的场景决策表。

关键问题:现在必须回答吗?

如果用户不选择就无法继续,那就是模态框。如果可以忽略它,屏幕依然说得通,那就是弹层。

光这一个问题,就能在大家争论外观之前解决大多数情况。它也解释了两者其他所有的差异:模态框位于中央并让其他一切变暗,因为在它被回答之前别的都不重要;弹层从底部升起并保留屏幕可见,因为屏幕仍然是重点。

模态框:先决定,再继续

项目列表在居中的对话框后变暗:删除项目?这将为所有人移除 24 个文件,且无法撤销。取消,以及一个红色的删除按钮

模态框在 Android 上叫对话框,在 iOS 上叫提示框,它是故意打断用户的。适合以下情况:

  • 用户必须先决定才能继续。 应用无法替他们猜答案。
  • 操作无法撤销。 删除一个会为所有人移除 24 个文件的项目,值得停一下。
  • 最多两个选项。 取消,加上以动词命名的操作:删除,而不是“确定”。

它失效的地方:任何可选的内容。弹出来求评分、宣布新功能或提供菜单的模态框,会挡住用户本来要做的事,他们还会学会不看内容,直接点能关掉它的按钮。

底部弹层:先浏览,再选择

同一个项目列表配上底部弹层:一个拖动手柄,然后是分享、复制、移动到和归档

底部弹层承载的是属于屏幕上已有内容的选项。适合以下情况:

  • 选项属于当前屏幕。 分享、复制、移动或归档这个项目。
  • 用户可以滑走它来退出。 不要求作答。
  • 选项多于两个。 弹层有空间放列表,而且列表就在拇指够得到的地方。

它失效的地方:任何不能被跳过的内容。弹层可能被一次误滑关掉,所以只放在弹层里的破坏性确认,很容易丢失,或被意外触发。

按钮太多,其实是伪装的弹层

错误:模态框

居中的对话框,标题为 Pitch deck,堆叠着六个按钮:分享、复制、移动到、归档、红色的删除和取消

正确:弹层

同样的选项放在底部弹层里:分享、复制、移动到和归档,上方仍可看到项目列表

左边的屏幕是最常见的混用。居中方框里堆了六个按钮,让用户在一次打断里去读菜单。这些选项没有一个紧急,所以没有任何东西需要拦住屏幕。同样的选项放进弹层,读起来就是一个列表,拇指够得到,滑一下就关闭。

Material Design 的规则很简短:对话框最多放两个操作。当你需要第三个时,你要的其实是菜单,而菜单属于弹层。

两者合用:在弹层里删除,用模态框确认

先是弹层

底部弹层,包含分享、复制、移动到、归档和一个红色的删除选项

再是模态框

居中的对话框询问删除项目?,带有取消和删除

这两种模式并不是对手。破坏性选项可以和其他操作一起放在弹层里,设成红色并放在最后。点击它会打开模态框,因为直到这时才出现无法撤销的决定。在弹层里浏览,在关键时刻拦截。

模态框还是弹层:决策表

场景选择原因
为所有人删除一个项目模态框无法撤销,两个选项
放弃未保存的更改模态框用户离开前必须决定
在共用设备上退出登录模态框一个会改变状态的是或否
分享、复制、移动、归档弹层针对屏幕上项目的选项
对列表排序或筛选弹层用户想看到后面列表的变化
结账时选择已保存的银行卡弹层超过两个选项,属于屏幕的一部分
从相机或相册添加照片弹层选择来源,容易退出
地图上的地点详情弹层地图依然是重点
继续前接受新条款模态框没有答案应用就无法继续
宣布新功能都不用没人需要做决定。用行内横幅

谁做得好

你今天就能在手机上验证这些:

  • Apple Maps 和 Google Maps 把搜索结果和地点详情放在地图上方的弹层里,所以你不会迷失位置。
  • iOS 分享面板 列出针对你正在看的内容的所有应用和操作,滑一下就关闭。
  • Instagram 帖子上的“更多”菜单会以底部弹层的形式打开,里面是针对该帖子的选项。

Apple 的指南从另一面划出了同一条线:提示框用于用户需要立刻知道的关键信息,包括某个操作可能破坏数据的警告,而弹层和操作表则承载与用户当前行为相关的选择。

FAQ

什么时候该用底部弹层而不是模态框?

当选项属于当前屏幕、多于两个,而且用户不必选择也能继续的时候。分享、排序、筛选和从列表中挑选,都是弹层的活。

什么时候该用模态对话框?

当用户必须先决定才能继续,通常是因为操作无法撤销。只放两个操作:一个取消,和一个以动词命名的操作。

模态框该有几个按钮?

最多两个。Material Design 说对话框最多包含两个操作。如果需要更多,那些选择就是菜单,应该放进弹层。

底部弹层算模态框吗?

模态底部弹层会让屏幕变暗,必须先关闭才能再使用屏幕,但它可以滑走关闭,而且不提问。对话框则会提出问题并等待回答。

iOS 上的提示框和操作表有什么区别?

提示框用关键信息和少量按钮打断用户。操作表从底部升起,提供与用户刚开始的操作相关的选择,比如针对一张照片的选项。

来源

Want your app's dialogs, sheets and every other pattern chosen and designed as one system? Our team designs app UI from the first flow to the finished components.

Get Started

More from Brainy Papers

Keep reading