直接答案:25 个首页里 24 个可测(E13 返回 502),共 1,372 个文本元素、25,879 个字符。按字符加权的字号中位是 14px;4 站中位 12px(E01、E04、E11、E29),10 站 14px,4 站 16px,最高 E20 的 20px。5 站出现 <12px 文本(33 个元素、724 个字符),长文本最小 8.3px(E18);20/24 站至少有一段 ≥10 字文本的行高低于 1.4。

这不是“字号小就一定违规”:12px 可以用于日期、法务或辅助信息;但整段正文长期 12px,在手机上会明显偏小。本文把 <12px 与行高 <1.4 当作筛查信号。

24
可测首页
1,372
文本元素
4
中位 12px
5
有 <12px 文本
724
<12px 字符
20
行高 <1.4 站

方法:390×844 下逐站读计算字号

2026-11-09 21:54–21:58,用 headless Chrome 124 与 DevTools Protocol 逐站新标签打开同一批 25 个首页:390×844、DPR 1、桌面 UA,等 readyState 为 complete 后再等 2.5 秒。对每个可见元素,只取它自己的直接文本节点(≥2 字符),读取 fontSize 与 lineHeight;祖先标签或 class 含 header/footer/nav/menu/breadcrumb/copyright 的元素排除,以近似正文区域。

口径判定边界
文本元素可见、宽高 ≥2px、直接文本 ≥2 字符只取直接文本节点,嵌套 span 会拆成多个元素
字号getComputedStyle 的计算值(CSS px)不含浏览器缩放与系统字体放大
加权中位每个字符按字号投一票,排序后取中位长段落权重更高,不是元素数中位
最长文本块直接字符数最多的可见文本元素可能是标题、列表或标签,不保证是正文段落
<12px字号小于 12px筛查阈值,不是 WCAG 最小字号
行高比line-height / font-size < 1.4,且文本 ≥10 字标题也会计入;不是只算正文段落
正文近似按祖先 tag/class 排除导航、页脚、菜单、面包屑、版权区class 匹配是启发式,可能误伤正文

结果:中位 14px,4 站只有 12px

加权中位字号站点数站点
12px4E01、E04、E11、E29
14px10E02、E03、E06、E09、E12、E17、E19、E25、E28、E30
14.6px1E18
15–15.2px3E08、E22、E26
16–16.6px5E14、E16、E23、E24、E27
20px1E20

5 个站的 body 声明字号就是 12px;14px 有 14 站,16px 有 3 站,其余为 14.625/16.64 的小数。最长文本块为 12px 的有 3 站(E04、E11、E29),14px 有 11 站,16px 有 5 站;E20 的 298 字符文本块为 20px。中位 12px 不代表全文都 12px:E01 的最长文本块是 16px 的介绍段,但 10px 的新闻摘要合计 467 字符,把加权中位拉到了 12px。

站点明细(E13 HTTP 502,未列出):

站点中位最长块<12px字符<12行高<1.4
E0112161446710
E021414000
E03141417225
E0412120011
E0614140012
E081514004
E091414007
E111212002
E121414000
E1416160020
E161616000
E1714140012
E1814.614.612861
E191414001
E202020004
E2215150011
E2316161116
E241616007
E25141458812
E2615.214.90021
E2716.616.6003
E2814140016
E291212001
E301414000

<12px 文本:33 个元素、724 个字符

5 站出现小于 12px 的文本,合计 33 个元素、724 个字符;其中 10 个元素有 20 字以上。E01 最多:14 个元素、467 字符,主要是 10px 的新闻摘要;E18 的 8.3px 日期标签、E25 的 5 个 6.5–10px 英文标语、E03 的 11px 地图版权、E23 的 8.6px 标语也计入。

站点<12px 元素字符最小长文本现场
E011446710px10px 新闻摘要段落
E1812868.3px列表日期与英文标签
E2558810px英文标语与辅助文字
E0317211px地图版权文字
E231118.6px品牌标语

行高:20/24 站至少一段 <1.4

对 ≥10 字的可见文本,按 line-height / font-size 计算:20 个站至少一段低于 1.4,合计 186 个元素。E03 有 25 个、E26 21 个、E14 20 个、E28 16 个;E02、E12、E16、E30 为 0。行高偏紧时,长段落在小屏上更容易串行;它同样包含标题,因此是筛查而非正文判定。

验收清单:正文、辅助、行高分开看

  1. 正文优先 ≥14px。 12px 可以留给日期、法务与辅助信息;整段正文不要长期停在 10–12px。
  2. 行高 1.5–1.7。 小字号配 1.2 的行高会让长文更挤;先改正文段落,再改标签。
  3. 按字符加权复核。 用长段落的字号代表正文,避免被几十个小标签的平均值误导。
  4. 390px 真机/模拟器都要看。 浏览器缩放不能替代真正的移动字号;viewport 与缩放可参考移动视口 pilot。
  5. 触控与字号一起验。 小字常与小目标同时出现,可参考390px 触控审计。

局限

  • 正文区域是按祖先 tag/class 的启发式排除,可能误伤含 nav/header 字样的正文容器。
  • 只取直接文本节点;嵌套 span 会拆成多个元素,长度与加权中位受 DOM 结构影响。
  • 只读计算后的 CSS px,不含浏览器缩放、系统字体放大或用户样式;一次快照。
  • 图片、Canvas、SVG 文本不计;伪元素文字也不计。
  • 行高比包含标题与标签,不是“正文行高”专项;<1.4 只是筛查线。
  • 25 站 pilot,E13 502 未测;不外推行业。

数据与复核

匿名数据:equipment-homepage-font-size-390-2026.csv(25 行 × 17 列:文本元素、字符、<12px、行高、加权中位、最长块、body 字号与时间)。仓库内为 docs/research/2026-11-homepage-font-size-390.csv。聚合口径与加权中位在 scripts/font_size_probe.py,scripts/test_content_font_size_probe.py 含 6 项断言;不含站点 URL、标题或联系方式。

常见问题

12px 一定不可读吗?

不一定。12px 用于辅助信息、日期或法务文字可以接受;整段正文长期用 12px,在手机上会偏小。本文把 <12px 作为筛查阈值,不把它当成 WCAG 的硬性最小字号。

为什么按字符加权算中位?

长段落比标签更能代表正文。若按元素数平均,几十个小标签会淹没正文;按字符加权让每个字符只投一票。

行高 1.4 是什么标准?

1.5–1.7 是常见的正文行高建议;WCAG 1.4.12 的文本间距要求也以 1.5 倍行高为参考。本文用 <1.4 作为筛查线,不是一致性判定。

为什么排除 header/footer/nav?

本文想看正文区域,所以按祖先标签与 class 排除导航、页脚、菜单、面包屑和版权区;class 匹配是启发式,可能误伤正文,这是已知边界。

为什么只有 24 站可测?

E13 在本次请求返回 HTTP 502,无法读取 DOM;其余 24 站都成功渲染并测量。

数据能复核吗?

可以。公开 CSV 25 行 × 17 列(含不可测行),聚合口径在 scripts/font_size_probe.py,有 6 项离线断言;可按 sample_id 复测。

关于作者

凌壹信息Official(交付团队),负责企业网站、品牌与智能制造项目的需求梳理、方案与验收协作。本文用 headless Chrome 在 390×844 下读取计算字号与行高,不登录、不提交表单;属 pilot,不外推行业。

正文先看得清

手机上的 12px 与紧凑行高不会报错,却会让长文难读;先量字号与行高,再谈视觉。

预约内容验收方案