文章目录
- 前言
-
- [✅ 一、核心适配方式对比](#✅ 一、核心适配方式对比)
- [📏 二、`rpx` 单位:uni-app 的核心适配机制](#📏 二、
rpx
单位:uni-app 的核心适配机制) - [🧱 三、默认设计稿适配(750宽)](#🧱 三、默认设计稿适配(750宽))
- [🔁 四、字体 & 屏幕密度适配](#🔁 四、字体 & 屏幕密度适配)
- [🛠 五、特殊平台适配(底部安全区、刘海屏)](#🛠 五、特殊平台适配(底部安全区、刘海屏))
- [🧪 六、调试建议](#🧪 六、调试建议)
- [🧰 七、总结:uni-app 的屏幕适配优势](#🧰 七、总结:uni-app 的屏幕适配优势)
前言
uni-app 相比普通 H5 页面,在适配多终端屏幕方面做了大量工作,目标是让同一套代码在 App、小程序、H5 等多平台上视觉一致、布局准确、交互无误。
✅ 一、核心适配方式对比
维度 | 普通 H5 页面 | uni-app |
---|---|---|
单位体系 | px , rem , % , vw/vh 等 |
统一使用 rpx (响应像素) |
设计稿基准 | 通常 750px 或 375px,需手动适配 | 默认设计稿以 750px 宽度为基准 |
屏幕适配机制 | 开发者手动设置 viewport 和 media query | 编译时自动转换 rpx → 实际像素(各端自适应) |
多端兼容性 | 需针对不同终端编写样式 | 各端运行时会自动渲染为适配单位(如 App、小程序自动转换) |
字体缩放问题 | 需要 JS 控制或媒体查询 | 自动处理大字体模式(小程序)和字体缩放(App)兼容性 |
📏 二、rpx
单位:uni-app 的核心适配机制
-
rpx
= responsive pixel(响应式像素) -
自动根据屏幕宽度进行缩放:
- 在 750px 设计稿下,屏幕宽度为
750rpx
,自动适配到任意设备 - 设备宽为 375px(iPhone 6/7/8),则
1rpx = 0.5px
- 在 750px 设计稿下,屏幕宽度为
-
编译时转换为各平台的对应单位:
- 小程序平台 → 微信原生
rpx
- H5 → 转换为
vw
- App → 转换为
px
+ dpr 缩放
- 小程序平台 → 微信原生
📌 你写一次:width: 375rpx
,在所有平台都能保持相同视觉宽度!
🧱 三、默认设计稿适配(750宽)
- 大多数组件、模板、样式都是以 750px 宽设计稿为基准
- 若你的设计稿是 375px 宽,也可以通过工具将其转为 750 再开发
rpx
只关注相对宽度,不必手动设置媒体查询或 DPR 缩放
🔁 四、字体 & 屏幕密度适配
- 小程序字体缩放兼容:
rpx
会自动缩放,不需要额外处理 - App 字体缩放兼容:
uni-app
已处理系统字体缩放问题 - 不建议使用
px
单位定义字体,否则在高 DPI 设备上易出现大小不一
🛠 五、特殊平台适配(底部安全区、刘海屏)
uni-app 提供了多平台兼容性处理:
问题 | 解决方式 |
---|---|
iPhone X 底部安全区 | 使用 safe-area-inset-bottom ,或 H5 中使用 padding-bottom: constant(safe-area-inset-bottom) |
状态栏高度 | 通过 uni.getSystemInfoSync() 获取 statusBarHeight |
刘海屏/圆角屏 | App 和小程序平台会自动适配 padding 区域,建议使用 view 包裹避免遮挡 |
🧪 六、调试建议
- 推荐设计稿基准宽度:750px
- 使用
HBuilderX
或微信开发者工具
来真实还原 rpx 效果 - 避免写死
px
布局(否则会在高分屏上过小)
🧰 七、总结:uni-app 的屏幕适配优势
优势 | 描述 |
---|---|
✅ rpx 统一单位 | 一套代码兼容所有屏幕密度和平台 |
✅ 编译阶段处理 | 无需手动编写媒体查询或动态 JS 控制 |
✅ 多端兼容性强 | H5、小程序、App 统一视觉表现 |
✅ 安全区处理完善 | App/iOS/小程序常见异形屏已内建支持 |