m***@163.com
m***@163.com
  • 发布:2025-02-26 10:19
  • 更新:2025-02-26 12:07
  • 阅读:99

【报Bug】rpx转换px有误差

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 4.24

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: k50

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

<view :style="{top:5510rpx}"></view>

操作步骤:

页面查看

预期结果:

rpx转换px正常

实际结果:

<uni-view data-v-911092fa="" style="top: 3159px;">

bug描述:

rpx转换px有误差,当数值比较小的时候,比如100rpx内,rpx转换px误差不明显。
但是当数值比较大,比如2755px,我设置为5510rpx,在iphone 6的 375宽度下是正常的,
但是切换到iphone 14 pro max的 430宽度时,会转换成3159px。
但实际上它正确的值应该是3135px的,会有误差。
有没有大佬遇到这个问题,怎么处理的呢?

2025-02-26 10:19 负责人:无 分享
已邀请:
杨杨得亿

杨杨得亿 - 这个人很懒,什么都没有留下~

iphone 6 是1倍的分辨率
iphone 14 pro max是4倍的分辨率
你这样处理肯定有误差
可以相对于盒模型来做距离比较,比如距离顶部5510rpx,可以变成距离底部***rpx。这样误差会小点
或者使用flex进行流式布局,也会好很多。

  • m***@163.com (作者)

    现在不太好处理,是一个长列表,就算换成底部了,那列表的顶部距离底部也是很远,还是有问题。所以大佬你们怎么处理这种大像素转换的呢?

    2025-02-26 11:14

杨杨得亿

杨杨得亿 - 这个人很懒,什么都没有留下~

试试这个处理方式吧

rpxToPx(){  
    const screenWidth = uni.getSystemInfoSync().screenWidth  
    return (screenWidth * Number.parseInt(rpx)) / 750  
}
  • m***@163.com (作者)

    嗯,只能手动处理了。还是有点麻烦,uniapp都没有把这些处理好啊。多谢大佬

    2025-02-26 14:23

要回复问题请先登录注册