uni-app 相同字体大小设置,但是编译出来在苹果和安卓的大小不一样
uni-app 相同字体大小设置,但是编译出来在苹果和安卓的大小不一样
操作步骤:
打开以下链接 http://www.smartcitybd.com:8087/#/ 打开开发者模式,切换苹果和安卓设备,选择相似尺寸,可以明显发现不同端的设备,字体大小不一样
预期结果:
安卓、苹果两端的字体大小需要保持一样
实际结果:
切换苹果和安卓设备,选择相似尺寸明显发现不同端的设备,字体大小不一样
bug描述:
相同字体大小设置,但是编译出来,苹果和安卓的大小不一样
附件:
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC系统版本 | window10 |
HBuilderX | 正式 |
HBuilderX版本 | 4.24 |
手机系统 | 全部 |
手机系统版本 | iOS 14 |
手机厂商 | 苹果 |
页面类型 | vue |
Vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
App下载地址 | http://www.smartcitybd.com:8087/#/ |
用的啥单位
看着都差不多啊。。是不是你的dpr的问题,一个2.6,一个3
本来也不一样,设备尺寸一样,但是分辨率不同,要想测试这个,得找屏幕尺寸相同,分辨率也得相同的两端机型才可以
在uni-app中,由于iOS和Android平台对字体渲染存在差异,即使设置了相同的字体大小,最终显示的效果也可能会有所不同。为了解决这一问题,可以通过一些技术手段来尽量统一两个平台上的字体显示。以下是一些常见的解决方案,并结合代码案例进行说明。
1. 使用px与rpx结合
uni-app推荐使用rpx(responsive pixel)作为单位,以适应不同屏幕尺寸。但在字体方面,有时直接使用px可以更精确地控制大小。你可以根据不同平台设置不同的字体大小。
// 在App.vue中根据平台设置全局变量
const platform = uni.getSystemInfoSync().platform;
Vue.prototype.$isIOS = platform === 'ios';
// 在组件中使用
<template>
<view>
<text :style="{ fontSize: isIOS ? '16px' : '18rpx' }">示例文本</text>
</view>
</template>
<script>
export default {
computed: {
isIOS() {
return this.$isIOS;
}
}
}
</script>
2. 使用自定义样式类
可以针对不同的平台定义不同的样式类,然后在组件中动态绑定。
/* 在App.vue或公共样式文件中定义 */
.text-ios {
font-size: 16px;
}
.text-android {
font-size: 18rpx;
}
<!-- 在组件中使用 -->
<template>
<view>
<text :class="[isIOS ? 'text-ios' : 'text-android']">示例文本</text>
</view>
</template>
<script>
export default {
computed: {
isIOS() {
return uni.getSystemInfoSync().platform === 'ios';
}
}
}
</script>
3. 使用字体缩放比例调整
如果希望所有字体大小都按照一定比例进行缩放,可以在全局样式中设置。
/* 在App.vue或公共样式文件中定义全局缩放比例 */
:root {
--font-scale-ios: 1;
--font-scale-android: 1.125; /* 根据实际情况调整 */
}
@media (platform: ios) {
:root {
--font-scale: var(--font-scale-ios);
}
}
@media (platform: android) {
:root {
--font-scale: var(--font-scale-android);
}
}
/* 在组件中使用 */
<template>
<view>
<text :style="{ fontSize: `${16 * getComputedStyle(document.documentElement).getPropertyValue('--font-scale')}px` }">示例文本</text>
</view>
</template>
注意:由于CSS媒体查询中的platform
并非所有浏览器都支持,实际开发中可能需要结合JavaScript动态判断平台来实现类似效果。
通过上述方法,可以在一定程度上减少iOS和Android平台上字体大小显示不一致的问题。根据具体需求选择合适的方法进行调整。