JGuang

安全区

SafeArea · Ant Design Mobile

交互预览
npm install antd-mobile@5.43.0

安全区 SafeArea

在全面屏下提供自适应的边距调整。

安装

npm install antd-mobile@5.43.0

antd-mobile 是移动网页组件库,不是 React Native 或小程序组件。React 19 项目需在入口用 unstableSetRender 注册 createRoot,否则 Toast、Dialog 等命令式 API 无法渲染;深色模式通过 <html data-prefers-color-scheme="dark"> 切换。

示例来自 Ant Design Mobile 官方仓库(MIT),固定在 npm 5.43.0 对应的提交;示例中的 DemoBlock 等展示辅助组件由 JGuang 重写,不属于 antd-mobile 的 API。

在全面屏下提供自适应的边距调整。

何时使用

当网页被全屏展示时,可借助安全区实现自动适配。

说明

SafeArea 组件是用来在全面屏下提供自适应的边距调整,它的底层实现其实是 env(safe-area-inset-xxx)。

当你的网页是被全屏展示时,可以借助它来实现自动的适配,下图中蓝色的部分是顶部 SafeArea 所占据的区域,而橙色的部分是底部 SafeArea 所占据的区域。

<img alt="safe-area-top" src="https://gw.alipayobjects.com/mdn/rms_25513e/afts/img/A*ATR3R5FOt9gAAAAAAAAAAAAAARQnAQ" width="500px" /> <img alt="safe-area-bottom" src="https://gw.alipayobjects.com/mdn/rms_25513e/afts/img/A*M9vOS5mUT_AAAAAAAAAAAAAAARQnAQ" width="500px" />

需要注意的是,下方的 demo 在桌面端浏览器下是看不到效果的:

示例

SafeArea

属性

属性说明类型默认值
position安全区的位置'top' | 'bottom'-

CSS 变量

属性说明默认值全局变量
--multiple显示的倍数1--adm-safe-area-multiple

FAQ

在 rem 布局下,SafeArea 高度很小怎么办?

一些 rem 方案会通过 viewport meta 设置网页的整体缩放,这种情况下,SafeArea 也会被对应的缩放,从而很可能高度异常。这时你可以通过全局的 --adm-safe-area-multiple CSS 变量来调整 SafeArea 的显示倍数,例如,如果你的项目框架将页面整体缩放为了 0.5 倍,那么你可以设置 --adm-safe-area-multiple: 2 来做对应的补偿调整。