uniapp尺寸适配的一些记录

本文详细解析了uni-app中的尺寸适配技巧,包括如何根据设计稿尺寸转换为rpx单位,以及在不同设备和平台(如web和小程序)上使用百分比设置控件宽高的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概览

在这里插入图片描述
运行到微信小程序,注意下,在浏览器查看的时候,是没有状态栏的

尺寸

可以参考

举例:

  1. 若设计稿宽度为 750px,元素 A 在设计稿上的宽度为 100px,那么元素 A 在 uni-app 里面的宽度应该设为:750 * 100 / 750,结果为:100rpx。
  2. 若设计稿宽度为 640px,元素 A 在设计稿上的宽度为 100px,那么元素 A 在 uni-app 里面的宽度应该设为:750 * 100 / 640,结果为:117rpx。
  3. 若设计稿宽度为 375px,元素 B 在设计稿上的宽度为 200px,那么元素 B 在 uni-app 里面的宽度应该设为:750 * 200 / 375,结果为:400rpx。

我们的设计图宽为1080,那么一个控件宽度为100px,那么就应该使用 750*100 / 1080 约为69rpx。
我们后面选择使用百分比的话,字体可以使用这个计算方式

控件宽高百分比设置

在web中
高度直接设置100%无效

百分比在uni-app中的使用(page)

参考

这是网络提供的一种方式,其实有一种最简单的方式,就是在每一个页面中,

如果使用具体值

既然uni-app说自己的尺寸,upx或者rpx是会根据屏幕尺寸自动适应的,他们的标准设计图又是750px的,我们可以写根布局尺寸为750rpx,1350rpx,让它们自动适应

但是在浏览器中查看的时候,选择iphoneX型号,纵向填充不满,这个应该方式是不考虑的

选择(web和小程序)

注意,因为运行到浏览器有uni-page-body标签,而运行到小程序是没有的:
在这里插入图片描述
所以,如果在引入uni-page-body设置是无效,不管是在app.vue还是在各自的page设置这个标签,在小程序的时候都是无效的。

所以用uni-page-body标签不适配小程序
使用具体值不匹配特殊尺寸屏幕

还是使用page,经测试,在APP上也适配

在每个页面中使用page,小程序不需要再配置;如果在App.vue中配置,
那么应该在小程序的app.wxss中也进行配置
### 创建 UniApp 项目的流程 创建一个新的 UniApp 项目可以通过命令行工具完成。具体来说,可以使用 `vue create` 命令并指定预设模板来初始化项目[^1]。 ```bash vue create -p dcloudio/uni-preset-vue my-uniapp ``` 此命令会基于 DCloud 提供的官方模板生成一个全新的 UniApp 项目结构。完成后即可进入项目目录进行开发环境配置和其他依赖项的安装。 --- ### 安装 Axios 并集成到 UniApp 中 为了在网络请求中更高效地管理和发送 HTTP 请求,在 UniApp 项目中通常推荐引入 Axios 库作为解决方案之一。Axios 支持 Promise API 和拦截器功能,能够很好地适配跨平台需求。 以下是安装 Axios 的基本步骤: ```bash npm install axios --save ``` 接着可以在页面或者公用服务层导入 Axios 来发起网络请求: ```javascript import axios from 'axios'; export function fetchData() { return axios.get('https://example.com/api/data') .then(response => response.data) .catch(error => console.error('Error:', error)); } ``` --- ### 获取设备信息的方法 对于需要动态获取运行时设备硬件特性的情况,比如机型名称和操作系统版本号等基本信息,可通过原生插件接口调用来实现。下面是一个 Android 环境下的 Java 实现案例[^2]: ```java public void getDeviceInfo(UniJSCallback callback) { JSONObject deviceInfo = new JSONObject(); try { String model = android.os.Build.MODEL; String version = android.os.Build.VERSION.RELEASE; deviceInfo.put("model", model); deviceInfo.put("version", version); if (callback != null && !callback.isInvokeFailed()) { callback.invoke(deviceInfo.toString()); } } catch (JSONException e) { e.printStackTrace(); } } ``` 该函数将收集的数据序列化为 JSON 字符串形式并通过回调传递至前端逻辑处理部分。 --- ### 自定义 H5 打包后的配置调整 当 UniApp 应用被打包成 HTML5 版本部署上线时,可能面临一些特定场景的需求变化(例如更换服务器地址)。此时就需要一种机制允许外部修改默认设置而无需重新编译整个工程[^3]。 针对这种情况,开源社区提供了专门解决此类问题的技术方案——即通过读取远程存储中的 JSON 文件或者其他轻量级数据库记录来自动生成最终生效的应用参数集合。更多细节可以从以下链接找到实际操作指导文档: [https://gitcode.com/open-source-toolkit/20764](https://gitcode.com/open-source-toolkit/20764) --- ### hello-uniapp 示例项目解析 作为一个入门级别的学习资料,“hello-uniapp” 展示了如何构建基础架构以及常见交互效果的设计思路[^4]。它涵盖了从界面布局设计、状态管理再到多端兼容测试全流程的最佳实践要点。 主要技术栈包括但不限于: - **Vue.js**: 负责视图渲染与事件绑定; - **CSS3 / Flexbox Layouts**: 构建响应式 UI 组件样式表规则集; - **JavaScript ES6+ Features**: 利用现代化语法简化编码复杂度; 同时支持一键分发至主流移动客户端及 Web 浏览器终端上无缝衔接体验一致性表现水平之上! --- ### 关于组件复用注意事项 考虑到不同团队之间协作效率最大化考量因素下,合理规划公共资源库显得尤为重要。一般而言简单的独立型控件可以直接迁移过来继续沿用原有属性定义方式不变前提条件下仅需简单替换尺寸单位标准由固定像素(px)转为相对比例(rpx/upx)[^5]。 而对于那些高度依赖第三方扩展库才能正常工作的部件,则应该遵循其官方说明文档指示逐步完成本地化移植过程直至完全脱离原始宿主环境约束为止。 --- ####
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值