唯一有效解法是pages.json中globalStyle配置rpxCalcMaxDeviceWidth: 0和rpxCalcBaseDeviceWidth: 375,禁用动态缩放、统一按375px基准换算,使1rpx恒为0.5px,确保iPad等大屏文字尺寸稳定可读。

rpxCalcMaxDeviceWidth: 0 是 iPad 上控制显示比例的唯一可靠入口。其他任何 JS 动态计算、CSS 媒体查询或 postcss 插件,在小程序端都会失效或不可控。
为什么 iPad 上文字和按钮“突然变大”
uni-app 小程序端默认按设备 screenWidth 线性缩放 rpx:1rpx = screenWidth / 750 px。iPad 横屏常达 1366px,此时 1rpx ≈ 1.82px,一个 32rpx 的标题实际渲染约 58px,远超可读范围。这不是“放大”,是换算失控。
- 该问题仅出现在小程序平台(微信/支付宝/字节等),H5 和 App 端不受影响
-
pages.json中未配置rpxCalcMaxDeviceWidth时,uni-app 默认启用动态缩放逻辑 - 设为
2000并不能解决问题——它只是把“炸开”的阈值拉得更远,仍会随宽度线性增长
pages.json 中必须写的两行配置
直接在 pages.json 的 globalStyle 下添加:
{
"globalStyle": {
"rpxCalcMaxDeviceWidth": 0,
"rpxCalcBaseDeviceWidth": 375
}
}
-
rpxCalcMaxDeviceWidth: 0表示禁用所有动态缩放,强制所有设备统一按rpxCalcBaseDeviceWidth计算 -
rpxCalcBaseDeviceWidth保持375即可(对应 1rpx = 0.5px),除非你的设计稿基准是 750 —— 那才需同步改为750 - 配置项之间不能有逗号,尤其注意前一个字段(如
pageOrientation)结尾是否误加了逗号 —— 这是“配了没反应”的最高频原因
别指望 CSS 媒体查询或 JS 动态 class 控制 iPad 缩放
媒体查询(@media (min-width: 768px))和 uni.getSystemInfoSync().windowWidth 在小程序端对 rpx 渲染无任何干预能力。它们只能控制显隐、class、布局结构,但无法改变 32rpx 到底被算成多少像素。
- 想让字体在 iPad 上“变小”,本质是让 rpx 换算结果回归稳定值,不是靠
font-size: 14px覆盖 - leftWindow / rightWindow 等窗体配置依赖
matchMedia,但它们不改变 rpx 基准,只决定组件是否加载 - H5 端若出现字体过大,需另配
h5.rpxCalculation: "auto"并监听resize,与小程序方案完全隔离
真正起效的只有 pages.json 里那两行。改完立刻生效,无需重启 HBuilderX,但需重新预览小程序 —— 因为这是编译期注入的全局样式规则。别在运行时试图 patch 它,也别给它加条件编译,它就是小程序端的铁律。


















