前端字体自适应

208 天前
 joker2026

我想请教个问题,在做响应式页面的时候,字体的响应式要如何处理,才能最优。我现在使用过的几种办法

1 、直接 px 然后媒体查询,这个肯定不是最优,第一是代码太多,每个断点都得单独写代码,而且你不可能完全适配到的所有设备

2 、rem ,其实和 px 差不多,也是根据媒体查询不断的去调整根节点的字体大小,来达到 rem 的大小变化。问题同 1

3 、使用 vw ,这是我觉得最丝滑的效果,配合 postcss-px-to-viewport ,非常好。但是它存在一个问题就是他完全是按照屏幕大小比例在缩小,就会导致文字会非常小,难以观看,当然可以使用 clamp 去设置字体最小值,但是每一个字体大小都这样设置,不仅没有提高效率,反而降低。

所以综上所述,各位常用的最丝滑的响应式方案,尤其是针对字体,有哪些建议呢? 感谢

3351 次点击
所在节点    前端开发
26 条回复
lisongeee
208 天前
字体可以使用一套 css 主题变量吗?不同的地方用不同的变量,然后媒体查询更改变量值就行
xxmym
208 天前
rem 更接近 vw ,极少数设备会因为非整数 px 有渲染问题。
要看你这个响应式指的是什么,只是单纯适配手机竖屏浏览的话只用 rem 或 vw 就可以。
横竖屏切换要考虑取短边,桌面移动响应就要加上媒体查询,不过这两种情况字号都好说,解决布局更重要
facebook47
208 天前
所以用 css 通过不同分辨率去控制,随着布局改变
codder
208 天前
用媒体查询,pc 设备和平板直接用 px ,到了手机确定一个合适的宽度设置好 vw ,其余尺寸就自动根据 vw 来适应了
150530
208 天前
@codder pc 和平板字体大小使用 16px 转 rem ,手机端使用媒体查询设置 html 的文字大小为 vw ,是这样吗
wu67
208 天前
你用 rem 为什么还要媒体查询?
就不能写 js 监听窗口大小 resize 然后节流设置 html 的 font-size 吗...
yKXSkKoR8I1RcxaS
208 天前
不要用 vw 不要用 vw 不要用 vw
重要的事情说三遍,这是一种极为危险的单位。

建议使用 rem ,PC 、PAD 、MOBILE 分别设置不同的根节点大小。
ColdBird
208 天前
移动端用 rem ,然后 font-size 跟 vw 做一个比例转换保证 1rem=10px 即可
pc 端通过媒体查询修改 px
encro
208 天前
小程序解决的方案就是 rem 。
相信他就是当前最好的方案。
encro
208 天前
@encro #9 小程序是 rpx ,我说错了。
idealist
208 天前
@Seria 请教一下,为什么 vw 很危险呢?
yKXSkKoR8I1RcxaS
208 天前
@idealist 因为是按宽度比例来计算的,容易不可控。
shunia
208 天前
字体大小应该是断点式的缩放,而不是完全平滑的缩放。这是设计上的基础。

也就是说字体大小天然应该用媒体查询。基于这一点考虑,就可以知道 px 或者 rem 根本不重要。

为了使用方便可以使用 css 变量,根据设计系统需要,在根样式文件里预定义不同断点下的合适的字体尺寸,在应用的组件上选取不同的尺寸即可。某些例外的情况可以使用基础尺寸做 scale 。
shunia
208 天前
另外也可以参考一些比较有名的设计类产品或者网站他们的样式实现方式,照搬一种也是可以的。不用自己费心去考虑这些,现成的东西太多。

设计类的比如 Adobe ,Figma 。产品类的比如 Github ,Reddit 。
tsutomu
208 天前
其实 px 就是最优的,设计规范搞好就行,其实也不难,其他的不叫响应式布局。
koor
208 天前
同意 13 楼 @shunia ,用大屏幕就是为了多看几行字,字体等比缩放就失去了意义
7gugu
207 天前
用 rem 就好了,在移动端上如果要禁用大字模式,可以固定写死一个 root font-size 来重置字体大小
wdking
207 天前
rem 就是最好的方案
thinkershare
207 天前
@Seria VW/VH 当然有它的用处,部分项目是非常适合,因为我压根不关心屏幕的尺寸,从 14 寸到 200 寸都是同一个布局,屏幕尺寸越大,内容也就越到。
lizy0329
207 天前
我听过最扯蛋的就是屏幕越大,字体不变,这样用户可以多看几行?! 貌似是阿里搞的

字体跟着整个页面等比缩放即可,如 @shunia 所说,需要再断点

目前 移动端 viewport 有这几种:
1. 直接扯大,使用 px
<meta name="viewport" content="width=750, user-scalable=no viewport-fit=cover">
2. 使用 rem ,再动态调整 root fontsize
3. 使用 vw

当然 rem/vw 都是 postcss 自动计算的,代码写 px 即可

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1045540

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX