@media print {
  th, .zebra td { print-color-adjust: exact;
    -webkit-print-color-adjust: exact; }
}

屏幕上表头是 #f2f2f2 灰底,打印预览一片白,斑马纹也没了,表格线和文字挤在一起分不清行。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,浏览器打印默认关掉背景色和背景图,只保留文字与边框,background 再怎么写都不输出。print-color-adjust 不显式设成 exact,Chrome 和 Safari 都会按省墨模式处理。

这次卡住的地方就在「打印背景色丢失」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

处理上按这个顺序:在打印样式里给需要底色的元素加 print-color-adjust: exact 与 -webkit- 前缀;提醒用户在打印对话框里勾上背景图形 这一项默认是关的;底色改成浅灰并把文字加深 保证黑白打印机也能分辨。

改完只确认一件事:打印预览里表头恢复浅灰底,斑马纹和文字对比清楚。

作者 9823189