安卓webview相同rem值表现的不一样

发布于 2022-09-12 04:13:48 字数 494 浏览 30 评论 0

两个安卓机AB

屏幕宽度都是360px

htmlfont-size都是36px

某个元素设置width: 2.64rem,

.item {
    width: 2.64rem
}

分别获取这个元素的宽度

alert($('.item').width())

最终A弹出的是95.0312px,B弹出的却是83.625px

这是为啥?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如果没结果 2022-09-19 04:13:48

自问自答了,这是问题也是答案

相对长度单位,相对于根元素(即html元素)font-size计算值的倍数

计算值,也就是说设置了font-size: 36px,但计算后单个后文字的宽度不一定是36px
在部分机型中会有误差,我这里设置36px,得到的却是31px,因此产生了这个问题。


解决方案:

1.首次设置到font-size后,计算真实宽度

function getTrueFontSize(){  
    var d = window.document.createElement('div');
    d.style.width = '1rem';
    d.style.display = "none";
    var head = window.document.getElementsByTagName('head')[0];
    head.appendChild(d);
    var trueFontSize = parseFloat(window.getComputedStyle(d,null).getPropertyValue('width'));
    return trueFontSize
}

2.更新font-size

//fontSize为第一次计算的font-size值
fontSize = fontSize * fontSize / getTrueFontSize();
docEl.style.fontSize = fontSize + 'px'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文