我认为你有相对定位的桌子,它已经向下移动了等于菜单栏高度的高度。例如,将下面的代码放在单独的 html 文件中并尝试打印它。你会看到类似的效果。
<!DOCTYPE html>
<head>
<style>
:root {
--menu-height: 200px;
}
@media print {
table { page-break-after:auto }
tr { page-break-inside:avoid; page-break-after:auto }
td { page-break-inside:avoid; page-break-after:auto }
thead { display:table-header-group }
tfoot { display:table-footer-group }
table.listing tbody {
border: 15px solid red;
}
table.listing tbody.display td {
color: red;
}
}
td,
th {
border: 1px solid gray;
height: 2cm;
}
table {
position: relative; /* <-- position shifted table */
top: var(--menu-height); /* <-- shifted down by menu height */
border-collapse: collapse;
border: 10px solid red
}
.menu-bar {
position: absolute; /* <-- floating menubar */
top: 0px;
width: 300px;
height: var(--menu-height);
background-color: bisque;
}
</style>
</head>
<body>
<div class="menu-bar">
<h5>Herd Report</h5>
<p>mountain goat</p>
</div>
<table>
<tr>
<th>asd</th>
<th>bbbb</th>
<th>bcccc</th>
<th>dddd</th>
<th>eee</th>
<th>ff ff</th>
<th>ggg </th>
<th>hhh h</th>
</tr>
<tr><td>1</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>2</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>3</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>4</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>5</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>6</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>7</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>8</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>9</td><td></td><td></td><td></td><td></td><td></td><td></td><td>c</td></tr>
<tr><td>0</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>11</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>12</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>13</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>14</td><td>5</td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
</table>
</body>
</html>
在上面的示例中,表格是相对定位的。这就是 CSS 标准所说的position:relative
:
relative
元素按照文档的正常流程进行定位,然后根据top、right、bottom、left的值相对于自身进行偏移。偏移量不影响任何其他元素的位置;因此,页面布局中为元素指定的空间与位置是静态的相同。
有关更多信息,请参阅:https ://developer.mozilla.org/en-US/docs/Web/CSS/position
如果您使用文档中的演示,您会注意到 position relative 保留页面上的位置和空间,但元素相对于该位置移动。因此,在打印表格时,浏览器会考虑元素的静态位置,在我们的例子中位于左上角,并相应地拆分行。但由于相对定位,工作台向下移动并在不需要的位置断裂。
要修复定位,您需要在样式表的末尾添加以下 CSS 规则。
@media print {
.menu-bar{
position: static;
}
table{
position: static;
}
}
我们在这里说的是如果媒体是打印的,那么静态定位菜单栏和表格。
您的项目中可能有很多复杂的样式,但您可能需要为打印媒体单独设置整个文档的样式。