选择页面上的最后一个元素(分页媒体)

Selecting the last element on page (paged media)

我想 select 打印页面上的最后一个元素。例如,给定此 HTML(假设打印页面的高度为 100px):

<!-- other content before -->

<div id="TheThing">
  <section id="a">Some content</section>
  <section id="b">Some content</section>
  <section id="c">This will be the last section on the page</section>
  <section id="d">This section will start on the next page</section>
  <section id="e">This is the last section</section>
</div>

<!-- other content after -->

和这个 CSS:

#TheThing {
  page-break-before: always;
  page-break-after: always;
}

section {
  height: 30px;
  border-bottom: solid 1px black;
  page-break-inside: avoid;
}

我希望能够 select 每个打印页面上的 最后一个元素 ,在本例中 #c(还有 #e ,尽管如有必要,可以使用 :not(:last-child)) 轻松排除并移除其边框。

所需输出的近似值:

目前我正在使用 Prince XML。我不想用它 JavaScript.

可能吗?

我认为这是无法控制的。主要原因是没有 "last in page" 这样的东西,因为根据您打印的纸张,可能会有更多元素,这发生在 CSS 应用于 [=19= 之后] 元素,您的文档无法访问此信息。

但是,如果您 100% 知道自己将使用哪种类型的纸张来打印它,比如说 A4,您可以为父元素和子元素设置高度,然后使用简单的 :nth-child()伪select或者您将能够控制select应用样式的哪一个。这是因为你知道 A4 的高度,所以你可以准确地预测,假设 none 将向打印预览页面添加任何不同的选项(即缩放等)。此外,您可以将此 CSS 放在 @media print 中,这样它只应用于打印的页面。

Prince 的创始人和首席程序员在他们的论坛中表示,如果没有 JavaScript 和 运行 文档两次通过 Prince,这是不可能的。抱歉:(

https://www.princexml.com/forum/topic/3672/how-to-select-the-last-tr-element-of-a-page-when-it-breaks