不同设备间 font-size 自适应?????

发布于 2022-09-02 01:23:36 字数 128 浏览 15 评论 0

写页面的时候用一个尺寸比如宽度 414,font-size 都是 rem定义的
然后,js根据页面的宽度/414*10px。 不同尺寸的ios设备都可以实现字体缩放
android其实也可以,但是有偏差【比如会换行】貌似会大点……

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

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

发布评论

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

评论(1

不羁少年 2022-09-09 01:23:36

移动端开发的页面建议是不要使用rem单位来设置字体的大小。因为通过rem方案计算出来的实际像素会有一定的偏差,而且存在小数;例如:
iphone6 屏幕的宽为375,设置的缩放比为initial-scale = 1.0,计算出 rem 的基准值为 375/10 = 37.5px; 即 1rem = 37.5px。

iphone6 plus 屏幕的宽为414,设置的缩放比为initial-scale = 1.0,计算出 rem 的基注值为 414/10 = 41.4px; 即 1rem = 41.4px。

当你要设置一个 16px 的字体的时候,换算成rem的方案在 iphone6 下就是 16/37.5 = 0.426667rem;在 iphone6 plus 下就是 16/41.4 = 0.386473rem;

浏览器解析的时候会根据你设置的基准值和设置的rem大小换算成px来显示。

所以建议不要使用rem来作为单位设置字体的大小。直接使用px来设置;但是要考虑到响应式的问题,所以需要针对不同的屏幕设置字体的大小,建议是结合使用less 或者sass来采用以下方案:

.px2px(@name, @px){
    @{name}: round(@px / 2) * 1px;
    [data-dpr="2"] & {
        @{name}: @px * 1px;
    }
    // for mx3
    [data-dpr="2.5"] & {
        @{name}: round(@px * 2.5 / 2) * 1px;
    }
    // for 小米note
    [data-dpr="2.75"] & {
        @{name}: round(@px * 2.75 / 2) * 1px;
    }
    [data-dpr="3"] & {
        @{name}: round(@px / 2 * 3) * 1px
    }
    // for 三星note4
    [data-dpr="4"] & {
        @{name}: @px * 2px;
    }
}

.demo{
    .px2px(font-size, 14);
}

编译后输出

[data-dpr="2"] .demo{
  font-size: 28px;
}
[data-dpr="2.5"] .demo{
  font-size: 35px;
}
[data-dpr="2.75"] .demo{
  font-size: 39px;
}
[data-dpr="3"] .demo{
  font-size: 42px;
}
[data-dpr="4"] .demo{
  font-size: 56px;
}

有个不好的缺点,就是编译后会有比较多的代码。

如果觉得以上的说明还没解决你的问题可以看看 淘宝的移动端自适应方案

知识补充 http://div.io/topic/1092

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文