底部滑出面板浮层
从屏幕底部向上滑出、盖住部分屏幕的临时面板。背后的页面通常会变暗但还看得见,往下拖或点背景就能关掉。
- 从下面滑上来的框
- 微信分享那个面板
- 半个屏幕的弹窗
- 底部弹窗
- 上拉面板
- 底部抽屉
- 半屏弹窗
示例
示例可交互
Web / iOS / Android 对照
Web需自己实现
桌面与移动端主流浏览器
Bottom Sheet
也叫 Drawer · Sheet
Web 没有专门的底部面板元素,现有 dialog 只提供对话框语义,不会直接产生从底部滑出的面板。Drawer 这个词在 Web 里也常指从侧边滑出的抽屉,容易混。
通常怎么做:使用 <dialog> 或绝对定位配合 CSS transform 自行实现,也可以使用 Radix Dialog、Vaul 这类第三方组件。
iOS原生支持
iOS / iPadOS
Sheet
SwiftUI: .sheet(isPresented:) / .presentationDetents()|UIKit: UISheetPresentationController
Apple 管这个叫 Sheet。注意跟 Action Sheet 区分——后者是底部弹出的一列按钮,属于另一个概念。半屏效果靠 presentationDetents 控制。
Android原生支持
Android 手机 / 平板;不含 Wear OS、TV、Auto
Bottom Sheet
也叫 Modal Bottom Sheet
Compose: ModalBottomSheet|View: BottomSheetDialogFragment
Material Design 里分 Modal(挡住交互)和 Standard(不挡)两种。Android 是三个平台里对这个组件规范最细的。
使用规范
什么时候用
- 在不离开当前页面的前提下,让用户完成一个短任务(选择、填表、确认)
- 内容量中等,一屏到两屏之间
- 需要保留上下文,让用户知道自己还在原来那个页面
什么时候别用
- 内容很长或有多层级导航 → 用整页(Full Screen / Push)
- 只是要用户二选一确认 → 用 Alert / Dialog
- 只是给一列操作选项 → iOS 用 Action Sheet,Web/Android 用 Menu
容易混淆
给 AI 的提示词
做一个从屏幕底部滑出的 bottom sheet,支持拖拽关闭,背景蒙层半透明,高度为屏幕的 50%,可以拖到 90%。