必须显式声明 print-color-adjust 和 font-family:-webkit-print-color-adjust: exact; print-color-adjust: exact; 强制颜色输出,字体栈用 "microsoft yahei", simsun, "noto sans cjk sc", sans-serif; 确保中文字形清晰可辨。

直接给弱视用户打印 HTML 页面,光靠 window.print() 和默认样式基本不可用:字号太小、对比度不足、链接无 URL、表格被截断、字体渲染发虚——这不是体验问题,是信息可及性失效。
为什么 print-color-adjust 和 font-family 必须显式声明
浏览器默认禁用背景色和部分颜色打印,color: #000 也不保证真正输出纯黑;Web 字体(如思源黑体、Inter)在打印预览中常回退为方块或细体,尤其对低视力用户阅读负担极大。
-
* { -webkit-print-color-adjust: exact; print-color-adjust: exact; }是强制启用颜色渲染的底线,缺它,深灰文字可能印成浅灰甚至隐形 - 中文字体栈必须锁定系统级安全字体:
font-family: "Microsoft YaHei", SimSun, "Noto Sans CJK SC", sans-serif;,SimSun(宋体)比微软雅黑更易辨识笔画结构 - 字号统一用
14pt起步(≈18.67px),避免rem或%;行高设为1.6以上,留足字间空间
链接、图片、表格的可访问性补救措施
弱视用户依赖上下文线索判断内容意图,纯“点击这里”或无尺寸约束的图片会直接切断信息链。
- 所有外链必须显示 URL:
a[href]:after { content: " (" attr(href) ")"; },且加white-space: nowrap;防止换行截断 - 图片需强制等比缩放并居中:
img { max-width: 100%; height: auto; display: block; margin: 0.5em auto; },避免右侧留白或拉伸失真 - 表格必须加
page-break-inside: avoid;和thead { display: table-header-group; },否则跨页时表头消失,用户无法理解下半页数据归属
@page 和 @media print 的优先级陷阱
很多项目把 @media print 塞在通用 CSS 文件末尾,结果被前面带 !important 的屏幕样式覆盖;更隐蔽的是,@page 规则若写在 @media print 内部,Chrome 会忽略它。
-
@page必须是顶层规则,不能嵌套:@page { size: A4; margin: 15mm; }单独写,不要包在@media print里 -
@media print样式表建议用<link rel="stylesheet" media="print" href="print-accessible.css">引入,比内联更可控、更易调试 - 避免
* { ... }全局重置,它会干掉table的display: table行为,导致表格塌陷——弱视用户靠结构定位,结构一乱就全盘失效
最常被跳过的一步是:用真实弱视模拟工具(如 Chrome 的“模拟视力障碍”功能)+ 打印预览双轨验证。只看屏幕样式,等于没验;只打一张纸,等于没测。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











