uni-app中px与rpx的转换原理及实现方法

作者:工具松鼠

时间:2026-10-31

浏览:134

本文详解uni-app中px与rpx的转换原理,基于750物理像素基准推导换算公式,并提供手动计算与uni.upx2px内置方法两种实现方案,帮助开发者解决多设备屏幕适配问题。

文章目录

第一种转换方法:

根据微信官方对rpx的定义说明,

rpx(responsive pixel)是一种响应式像素单位,能够依据屏幕宽度自动调整尺寸。官方规定标准屏幕宽度为750rpx。

以 iPhone6 为例,其屏幕宽度为375px,包含750个物理像素。此时对应关系为:750rpx = 375px = 750物理像素,即1rpx等于0.5px,也等于1个物理像素。

由此可知,换算基准是750个物理像素:

px / rpx = screenWidth / 750

基于上述比例关系,可推导出以下换算公式:

  • rpx = (750 px) / screenWidth
  • px = (screenWidth rpx) / 750
// rpx转px
rpxToPx(rpx) {
	const screenWidth = uni.getSystemInfoSync().screenWidth
	return (screenWidth * Number.parseInt(rpx)) / 750
}

// px转rpx
pxToRpx(px) {
	const screenWidth = uni.getSystemInfoSync().screenWidth
	return (750 * Number.parseInt(px)) / screenWidth
}

第二种转换方法:

利用 uniapp 框架内置的转换接口。

// rpx转px
rpxToPx(rpx) {
	return uni.upx2px(rpx)
}

// px转rpx
pxToRpx(px) {
	//计算比例
	let scale = uni.upx2px(100)/100;
	return px/scale
},

补充:单位转换公式

前文所述内容,旨在厘清rpx和px之间的具体关系。

若以 iPhone6 为基准(屏幕宽度375px),则:

  • 750rpx = 375px = 750物理像素
  • 1rpx = 0.5px = 1物理像素

许多开发者推荐使用 iPhone6 进行模拟开发,因为此时单位转换直观呈现为2:1的比例。但这并非适用于所有设备,此前我也曾误以为通用比例为2:1,导致频繁出现Bug。实际上,不同设备需遵循特定的转化公式,而非简单的固定比例。

总体而言,换算始终以750个物理像素为基准。

  • px / rpx = screenWidth / 750

据此可推导出通用计算公式:

  • rpx = (750 * px) / screenWidth

  • px = (screenWidth * rpx) / 750

// rpx转px
rpxToPx(rpx) {
  const screenWidth = uni.getSystemInfoSync().screenWidth
  return (screenWidth * Number.parseInt(rpx)) / 750
}

// px转rpx
pxToRpx(px) {
  const screenWidth = uni.getSystemInfoSync().screenWidth
  return (750 * Number.parseInt(px)) / screenWidth
}

总结

至此,关于uni-app中px与rpx转换方法的介绍结束。如需了解更多uni-app px与rpx转换相关内容,请搜索本站历史文章或继续浏览后续相关文章,感谢大家的支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章