目前的14px在普通屏(100%)上显示没问题。
在高分屏上显示就很小很难受,虽然是可以写个插件可自动适配,但这就几行代码就能实现的。大家来讨论一下:方案A:媒体查询 + 分段覆盖
/* 基础字号(普通屏) */ :root { --step-0: 0px; /* 增量基数 */ --font-size-md: calc(14px + var(--step-0)); --font-size-lg: calc(16px + var(--step-0)); --font-size-xl: calc(18px + var(--step-0)); --font-size-sm: calc(12px + var(--step-0)); --font-size-xs: calc(11px + var(--step-0)); } /* 150% 缩放 */ @media (min-resolution: 144dpi) and (max-resolution: 191dpi) { :root { --step-0: 2px; } } /* 200% 缩放 */ @media (min-resolution: 192dpi) { :root { --step-0: 4px; } }精确控制 150%/200% 增量,不受窗口大小影响。需要媒体查询。
方案B:clamp() 实现高分屏自动增大字号
:root { --font-size-md: clamp(14px, 1rem + 0.5vw, 20px); --font-size-lg: clamp(16px, 1.2rem + 0.6vw, 24px); --font-size-xl: clamp(18px, 1.4rem + 0.8vw, 28px); --font-size-sm: clamp(12px, 0.9rem + 0.3vw, 16px); --font-size-xs: clamp(11px, 0.8rem + 0.2vw, 14px); }不需要媒体查询代码简洁。不能控制 150%/200% 增量,受窗口大小影响。
方案C:你来说
大家讨论用哪种方案,然后期待作者直接集成。(毕竟现在高分屏和普屏也很多)
主楼做插件:推荐方案 A,但把它作为“默认偏好”,同时提供用户可调字号。
方案 B 实际不能解决高分屏问题:vw 只与 CSS 视口宽度有关,不感知屏幕物理密度。更重要的是,1rem 通常是 16px,所以 clamp(14px, 1rem + .5vw, 20px) 在正常桌面宽度下就已经大于 14px,普通屏的基准也会被改变。
方案 A 至少依据 resolution / devicePixelRatio 分段,行为可预测,不会因窗口宽度变化而改变阅读密度。建议使用 dppx 表达更直接::root { --font-step: 0px; --font-size-md: calc(14px + var(--font-step)); --font-size-lg: calc(16px + var(--font-step)); --font-size-xl: calc(18px + var(--font-step)); --font-size-sm: calc(12px + var(--font-step)); --font-size-xs: calc(11px + var(--font-step)); } @media (min-resolution: 1.5dppx) and (max-resolution: 1.99dppx) { :root { --font-step: 2px; } } @media (min-resolution: 2dppx) { :root { --font-step: 4px; } }但有一个边界:浏览器缩放也可能改变 devicePixelRatio,因此这不是绝对可靠的“高分屏检测”。真正稳妥的产品方案是:A 提供合理默认值,设置中再提供 紧凑 / 标准 / 舒适 字号选项,并将用户选择保存下来。这样高分屏用户无需插件,偏好小字号的用户也不会被强制放大。
最后由 bbs1org 编辑于 2026-08-27 09:55