console.log('upx2px 100', uni.upx2px(100));
console.log('rpx2px 100', uni.rpx2px(100)); - 发布:2026-02-05 11:20
- 更新:2026-02-06 11:10
- 阅读:29
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows11
手机系统: HarmonyOS NEXT
手机系统版本号: HarmonyOS 6.0.0
手机厂商: 华为
手机机型: Huawei Mate 70 Pro+
页面类型: vue
vue版本: vue3
打包方式: 离线
项目创建方式: CLI
CLI版本号: 4.87
示例代码:
操作步骤:
-
"rpxCalcBaseDeviceWidth": 750 时:
// 鸿蒙App下
console.log('upx2px 100', uni.upx2px(100)); // 输出100
console.log('rpx2px 100', uni.rpx2px(100)); // 输出50
// h5 下
console.log('upx2px 100', uni.upx2px(100)); // 输出55
console.log('rpx2px 100', uni.rpx2px(100)); // 输出55
以上情况在鸿蒙APP下不一致
-
当"rpxCalcBaseDeviceWidth": 375时:
console.log('upx2px 100', uni.upx2px(100)); // 输出50
console.log('rpx2px 100', uni.rpx2px(100)); // 输出50
// h5 下
console.log('upx2px 100', uni.upx2px(100)); // 输出55
console.log('rpx2px 100', uni.rpx2px(100)); // 输出55
以上情况一致
-
"rpxCalcBaseDeviceWidth": 750 时:
// 鸿蒙App下console.log('upx2px 100', uni.upx2px(100)); // 输出100 console.log('rpx2px 100', uni.rpx2px(100)); // 输出50// h5 下
console.log('upx2px 100', uni.upx2px(100)); // 输出55 console.log('rpx2px 100', uni.rpx2px(100)); // 输出55以上情况在鸿蒙APP下不一致
-
当"rpxCalcBaseDeviceWidth": 375时:
console.log('upx2px 100', uni.upx2px(100)); // 输出50 console.log('rpx2px 100', uni.rpx2px(100)); // 输出50// h5 下
console.log('upx2px 100', uni.upx2px(100)); // 输出55 console.log('rpx2px 100', uni.rpx2px(100)); // 输出55以上情况一致
预期结果:
- "rpxCalcBaseDeviceWidth"为750 时,uni.upx2px()获取的值应与其他平台表现应一致,与uni.rpx2px也应一致
- "rpxCalcBaseDeviceWidth"为375时,鸿蒙App平台下获取的值应与其他平台表现一致,与uni.rpx2px一致
- "rpxCalcBaseDeviceWidth"为750 时,uni.upx2px()获取的值应与其他平台表现应一致,与uni.rpx2px也应一致
- "rpxCalcBaseDeviceWidth"为375时,鸿蒙App平台下获取的值应与其他平台表现一致,与uni.rpx2px一致
实际结果:
- "rpxCalcBaseDeviceWidth"为750 时,uni.upx2px()获取的值应与其他平台表现不一致,与uni.rpx2px也不一致
- "rpxCalcBaseDeviceWidth"为375时,鸿蒙App平台下获取的值应与其他平台表现一致,与uni.rpx2px一致
- "rpxCalcBaseDeviceWidth"为750 时,uni.upx2px()获取的值应与其他平台表现不一致,与uni.rpx2px也不一致
- "rpxCalcBaseDeviceWidth"为375时,鸿蒙App平台下获取的值应与其他平台表现一致,与uni.rpx2px一致
bug描述:
使用uni-app开发鸿蒙应用时:
当设置 "rpxCalcBaseDeviceWidth": 750 时:uni.upx2px方法与uni.rpx2px得到的值不同
当设置 "rpxCalcBaseDeviceWidth": 375 时:uni.upx2px方法与uni.rpx2px得到的值又是相同的
导致有个问题,我开发的组件库都是默认设置,也就是"rpxCalcBaseDeviceWidth": 375,内部使用的是uni.upx2px方法。组件库开源后,用户使用时的配置"rpxCalcBaseDeviceWidth": 750,导致组件库内uni.upx2px转化的值不符合预期,组件库内部样式错乱。
2 个回复
Ask小助手
【官方评审结论】
该反馈描述清晰、复现步骤完整,已确认为鸿蒙平台 uni.upx2px 与 uni.rpx2px 在 rpxCalcBaseDeviceWidth ≠ 375 时的计算差异缺陷,属于有效 BUG。
1. 反馈完整性评估
无需补充信息,可直接进入复现流程。
2. 依据知识库判定 BUG 成立
优先知识库已指出:
但 鸿蒙 Next 平台 在 4.33-alpha 起已新增
uni.upx2px支持:因此:
uni.upx2px,但实现逻辑未与uni.rpx2px保持一致;rpxCalcBaseDeviceWidth为 750 时,upx2px(100)返回 100(未按 750→375 缩放),而rpx2px(100)返回 50(正确缩放),两者应相等;综上,BUG 成立,属鸿蒙端特有实现缺陷。
3. 临时规避建议(官方可同步告知用户)
在官方修复前,组件库作者可在初始化时动态校准:
4. 后续官方处理
uni.upx2px与uni.rpx2px在鸿蒙端的计算逻辑,确保无论rpxCalcBaseDeviceWidth取何值,两 API 返回值一致。DCloud_UNI_yuhe
我这运行发现没有差异,你升级 alpha 5.0 测试一下,如果还不行,发一个测试项目看看
要回复问题请先登录或注册
公告
更多>相关问题