最稳定分页方式是用 page-break-before: always 插在新页内容前;table 分页需拆分为多个带 thead 的独立表格,并用空 div 作分页占位符,且仅在 print 媒体中生效。

直接说结论:用 常见错误是给最后一个表格或标题加 表格是最容易出问题的场景:一个长 page-break-before: always 插在需要新开一页的元素前面,是最稳定、浏览器兼容性最好的方式;别对 <tr> 或 <code><td> 直接加分页属性,基本无效。<h3>为什么 <code>page-break-after 有时不生效
page-break-after: always,结果第二页内容还是挤在同一页底部。根本原因是:如果该元素后面没内容,或者它本身高度接近页面末尾,浏览器可能忽略这个指令——page-break-after 是“建议”,不是强制锚点。
position: absolute)、浮动(float)、flex 子项等脱离文档流的元素,会让 page-break-after 失效page-break-before: always 放在第二页内容的开头,语义清晰、触发确定怎么让表格不被撕开跨页
<table> 被截成两半,表头消失,数据错位。这不是 bug,是浏览器默认把整个表格当做一个不可分割块来处理分页逻辑的结果。<ul><li>
<code>page-break-inside: avoid 对 <table> 本身有效,但对 <code><tr> 或 <code><td> 无效(规范明确不支持)<li>如果表格太长必须分页,唯一可靠做法是拆成多个独立 <code><table>,每个带完整 <code><thead>,并在它们之间插入 <code><div style="page-break-before: always"></div>@media print 中要额外写 table { break-inside: avoid; },现代写法比 page-break-inside 更稳妥空
<div> 强制分页比直接加样式更可靠<p>与其纠结某个内容元素要不要加 <code>page-break-before,不如在 HTML 结构里插一个干净的“分页占位符”:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
<!-- 第一页结尾 -->
- 这个
<div> 没内容、没边距、没背景,纯粹作为分页信号,不会影响布局<li>它不受父容器 <code>display类型(如flex或grid)干扰,也不依赖兄弟元素是否“撑满”一页 - 所有主流浏览器(Chrome、Edge、Firefox、Safari)都认这个写法,包括打印预览模式
最易被忽略的一点:分页效果只在 @media print 下起作用,开发时用浏览器「打印预览」(Ctrl+P)看,别靠普通页面渲染判断。另外,如果用了 @page { margin: 2cm },记得同步检查内容区域是否因边距变小而意外溢出——分页失败,十次有八次是边距和内容高度算错了。










