移动端适配用 rem 还是 vw 更合适? Mr-卜楷 提问于 2026-03-18 07:37:19 阅读 18 优化 最近在做一个移动端 H5 项目,UI 给的设计稿是 375px 宽。我之前用的是 rem 配合 JS 动态设置根字体大小,但发现有些安卓机上字体渲染有点模糊。 听说现在很多人直接用 vw 单位做适配,是不是更简单?有没有什么兼容性问题?比如我这样写: .box { width: 50vw; height: 20vh; font-size: 4vw; } 会不会在某些老机型上出问题?或者有更好的方案? 移动端优化适配方案 我来解答 赞 13 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 Dev · 春光 Lv1 vw 方案确实比 rem + JS 简洁,兼容性也没那么差。iOS 8+ 和 Android 4.4+ 都支持 vw,现在主流机型基本没问题。你那个写法在大部分机器上能跑,但有几个坑要注意: 字体用 vw 容易出问题 你的代码里 font-size: 4vw,在 375px 设计稿下是 15px,但屏幕宽到 414px 时就变成 16.56px 了。大屏幕手机字体过大,小屏幕又偏小,而且字体小于 12px 的时候渲染确实会模糊。 推荐方案:vw 做布局,rem 做字体 容器宽度用 vw,字体用 rem 配合一个固定基值。比如: html { font-size: 16px; /* 固定基值 */ } .box { width: 50vw; padding: 2vw; font-size: 0.875rem; /* 基于 16px 的字号 */ } 或者更直接的办法,用 PostCSS 插件把 vw 自动转换成 rem。比如你写 width: 50vw,插件帮你转成对应的 rem 值,这样既能用 vw 的便捷,又能保证字体渲染清晰。 关于兼容性问题 如果你的项目要兼容 Android 4.3 以下或者老版 WebView,可以加个 polyfill,或者直接用 rem fallback。现在新项目的话,vw 可以放心用,主流方案基本都这么搞。 简单说,能用 vw 解决的事就别让 JS 掺和了,省心。 回复 点赞 2026-03-18 12:07 加载更多 相关推荐 1 回答 19 浏览 rem和vw到底该怎么选?适配方案总出问题怎么办? 最近做移动端项目,用rem适配时在不同机型上布局老是错位,换成vw又怕兼容性不好。我试了动态设置html的font-size,但效果不稳定,尤其在iPhone和安卓机上表现不一致。 比如下面这段代码,... 爱学习的彦霞 优化 2026-03-13 17:22:26 1 回答 8 浏览 移动端适配用 rem 还是 vw 更合适? 最近在做一个移动端 H5 项目,UI 给的设计稿是 375px 宽。我之前用的是 rem 配合 JS 动态设置根字体大小,但发现不同机型下还是有细微偏差,而且代码写起来有点麻烦。 听说现在很多人直接用... 令狐富水 优化 2026-03-17 16:44:21 2 回答 22 浏览 rem和vw到底该用哪个做移动端适配? 最近在做一个移动端项目,UI给的设计稿是375px宽。我之前用rem配合js动态设置html的font-size,但听说现在主流都用vw了?试了下直接写width: 50vw确实方便,但有些老机型好像... IT人士轩 优化 2026-02-25 19:05:20 1 回答 4 浏览 rem适配在不同机型上为啥还是错位? 我用rem做移动端适配,按照设计稿750px来设置根字体大小,但真机测试时发现iPhone和安卓显示效果不一致,有些元素明显偏移了。 我在html里动态设置了font-size,代码是这样的: fun... 志选 Dev 移动 2026-03-22 23:25:20 1 回答 18 浏览 rem适配在不同机型上为啥还是错位了? 我用rem做移动端适配,按照设计稿750px写的,js动态设置html的font-size,但iPhone和安卓上显示效果不一致,有些元素还是错位了。 我的基准是375px,所以用了这个脚本: con... 莉娜 Dev 移动 2026-03-12 15:03:18 2 回答 58 浏览 rem和em在移动端响应式布局中如何配合使用? 最近在做移动端适配时发现一个问题,当同时使用rem和em时,字体大小总是忽大忽小。比如设置了html{font-size:16px},然后用em的子元素又套了rem,结果在iPhone12上显示正常,... 迷人的康平 移动 2026-02-08 23:15:25 2 回答 89 浏览 为什么用rem方案后移动端页面在不同机型下字体和间距错乱? 最近在用rem方案做移动端适配,按教程设置了html根字体大小,但发现iPhone 12和华为nova9的字体和间距显示完全不一样,1rem在nova9上显得特别大。 我按教程写了个动态计算函数: f... 慕容小敏 移动 2026-01-29 18:13:26 1 回答 72 浏览 vw/vh在移动端适配时为什么有时候失效? 我用 vw 做了一个全屏的卡片组件,但在某些安卓机上高度明显不对,vh 好像没生效。试过加 meta viewport 了,还是不行。 这是我的 Vue 组件代码: <template> ... 长孙秀云 移动 2026-03-16 09:54:20 2 回答 87 浏览 rem适配时页面元素在不同手机上缩放比例不一致怎么办? 我用rem方案开发移动端时,设置了根字体大小根据屏幕宽度计算,但iPhone12和小米11上按钮大小明显不一样,html{font-size:50px}明明是动态计算的啊... 代码是这样写的:fun... 开发者阳阳 移动 2026-02-16 01:20:30 2 回答 37 浏览 rem适配后为什么不同手机字体大小不一致? 我在用rem方案开发移动端时遇到个怪问题,设置了html根字体大小后,iPhoneX和华为nova9上的文字显示明显不一样大。明明都按设计图的750基准做了计算: const designWidth ... Newb.玉宁 移动 2026-02-15 20:28:28
字体用 vw 容易出问题
你的代码里
font-size: 4vw,在 375px 设计稿下是 15px,但屏幕宽到 414px 时就变成 16.56px 了。大屏幕手机字体过大,小屏幕又偏小,而且字体小于 12px 的时候渲染确实会模糊。推荐方案:vw 做布局,rem 做字体
容器宽度用 vw,字体用 rem 配合一个固定基值。比如:
或者更直接的办法,用 PostCSS 插件把 vw 自动转换成 rem。比如你写
width: 50vw,插件帮你转成对应的 rem 值,这样既能用 vw 的便捷,又能保证字体渲染清晰。关于兼容性问题
如果你的项目要兼容 Android 4.3 以下或者老版 WebView,可以加个 polyfill,或者直接用 rem fallback。现在新项目的话,vw 可以放心用,主流方案基本都这么搞。
简单说,能用 vw 解决的事就别让 JS 掺和了,省心。