当前位置: 首页 > backend >正文

uniapp的适配方式

文章目录

  • 前言
    • ✅ 一、核心适配方式对比
    • 📏 二、`rpx` 单位:uni-app 的核心适配机制
    • 🧱 三、默认设计稿适配(750宽)
    • 🔁 四、字体 & 屏幕密度适配
    • 🛠 五、特殊平台适配(底部安全区、刘海屏)
    • 🧪 六、调试建议
    • 🧰 七、总结: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
  • 编译时转换为各平台的对应单位:

    • 小程序平台 → 微信原生 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/小程序常见异形屏已内建支持

http://www.xdnf.cn/news/7041.html

相关文章:

  • PDF批量合并拆分+加水印转换 编辑 加密 OCR 识别
  • 软件架构之-论软件系统架构评估以及应用
  • Zookeeper入门(三)
  • 《Vite 报错》ReferenceError: module is not defined in ES module scope
  • 影刀处理 Excel:智能工具带来的高效变革
  • 广域网学习
  • 数据结构与算法——栈和队列
  • Python字符串格式化(一):三种经典格式化方法
  • 从零开始实现大语言模型(十六):加载开源大语言模型参数
  • 《Python星球日记》 第87天:什么是大语言模型 LLM?
  • 1_Spring 【IOC容器的创建】
  • 深入了解linux系统—— 基础IO(下)
  • 【QGIS二次开发】地图编辑-08
  • tauri2项目使用sidcar嵌入可执行文件并使用命令行调用
  • 实战设计模式之状态模式
  • 互联网大厂Java面试场景:从Spring Boot到分布式缓存技术的探讨
  • 十一、STM32入门学习之FREERTOS移植
  • React 19 中的useRef得到了进一步加强。
  • ngx_http_proxy_protocol_vendor_module 模块
  • 【Linux】进程的基本概念
  • 虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系
  • 【android bluetooth 协议分析 01】【HCI 层介绍 5】【SetEventMask命令介绍】
  • Elasticsearch 初步认识
  • 用 UniApp 构建习惯打卡 App —— HabitLoop 开发记
  • 【cursor】有效解决
  • Denoising Score Matching with Langevin Dynamics
  • 【HarmonyOS 5开发入门】DevEco Studio安装配置完全指南
  • Flink 的窗口机制
  • 【ant design】ant-design-vue 4.0实现主题色切换
  • 【软考 McCabe度量法】