打印表格边框消失需在@media print中为table、th、td显式声明border和!important;跨页断裂须配合thead display:table-header-group、tr page-break-inside:avoid及width:100%;字体用pt单位+系统字体栈,禁用rem/em;调试必用真实打印预览。

表格边框在打印预览里消失,必须显式重置
浏览器打印样式表默认把 border 设为 none,background-color 也常被抹白——不是你没写,是它根本没读。必须在 @media print 里逐级声明,且加 !important。
table, th, td { border: 1px solid #000 !important; border-collapse: collapse !important; }th, td { padding: 6pt !important; background-color: #fff !important; }- 别只写
table { border-collapse: collapse },th和td的border必须单独写,否则 Chrome/Safari 打印引擎大概率忽略 - 禁用
rem或em做内边距,用pt或px(如6pt),确保物理尺寸稳定
表格跨页断裂,靠 thead { display: table-header-group } 不够稳
仅设 thead { display: table-header-group } 在旧版 Edge、部分 Safari 版本下会失效,第二页开头只剩裸 <tr>。得配合行级控制和宽度约束。
<ul><li>给每行 <code><tr> 加 <code>page-break-inside: avoid;,防止单行被劈开
width: 100% !important;,禁用 max-width 或固定像素值(如 800px).new-page-after-table { page-break-after: always; } 强制分页,比依赖自动断点更可控@page { size: landscape; },同时确保容器 max-width: none;,否则仍按 A4 纵向裁切字体发虚、中文变方块,系统字体 + pt 单位是底线
Web Font 在打印时基本不加载,rem 和 % 会导致字号在不同浏览器换算出的物理尺寸差 1–2mm,直接糊成一片。
- 正文字体栈强制用:
font-family: "Microsoft YaHei", SimSun, sans-serif; -
<pre class="brush:php;toolbar:false;"></pre>和<code>块必须指定等宽字体:font-family: "Courier New", monospace; - 字号统一用
pt(如11pt)或mm(如3.9mm),禁用rem、%、em - 加
color-adjust: exact; -webkit-print-color-adjust: exact;强制打印背景色,但注意 Chrome 最新版仍可能忽略background-image
调试必须用打印预览,不能靠 DevTools 切换媒体类型
DevTools 的「Emulate CSS media」只是模拟渲染,不触发真实打印引擎的分页逻辑和字体回退机制。很多问题(比如表头不重复、空白页突兀出现)只有在打印预览里才暴露。
立即学习“前端免费学习笔记(深入)”;
- 每次改完
@media print,立刻按Ctrl+P(或Cmd+P)打开预览,别等导出 PDF 或连真机 - 预览中放大到 100%,看边框是否连续、文字是否锐利、表格是否整行跨页
- 如果用了
iframe,父页的@media print不会穿透生效,需在iframe内单独定义或提前提取内容 - 真正难调的是
@page { margin: 1cm; }—— Chrome 和 Safari 实际留白可能差 2mm,这种偏差只能靠多轮 PDF 导出交叉验证



















