puppeteer - 使用 puppeteer 生成 PDF 时 "break-inside: avoid"被忽略

标签 puppeteer

我正在使用 puppeteer v 5.2.1 从网页生成多页 PDF。
我正在使用以下内容来确保此块元素不会在分页符处被切断:

.wrapper {
    display: block;
    float: left;
    break-inside: avoid;
}
我已经使用@page 设置了其他分页媒体内容,以查看 Puppeteer 可以处理分页媒体。
但我的块元素仍然被切断?
Pupetteer 正在模拟屏幕。虽然当它使用默认打印仿真时,我得到了相同的结果。
我的设置中是否缺少某些内容?

最佳答案

好的,我已经解决了这个问题。
问题是我的 .wrapper 元素的容器元素是一个内联块。
包装器本身是块元素,因此它们遵循内部 CSS。但是,如果包含多个这些 .wrapper 元素的周围容器是内联块,那么页面媒体 CSS 会将其视为一个整体块,因此用户代理将选择在结束时拆分此块页面 - 不尊重它的块 child 。
这是根据规范设计的:
https://www.w3.org/TR/css-break-3/#end-block

.parent {
  display: block;
}

.wrapper {
  display: block;
  float: left;
  break-inside: avoid;
}
<div class="parent">
  <div class="wrapper">
    <div>Some content</div>
  </div>
  <div class="wrapper">
    <div>Some content</div>
  </div>
  <div class="wrapper">
    <div>Some content</div>
  </div>
</div>
在我最初的问题中,我的 parent 被错误地声明为
.parent {
  display: inline-block;
}

关于puppeteer - 使用 puppeteer 生成 PDF 时 "break-inside: avoid"被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63602216/

相关文章:

javascript - puppeteer 在调用公开函数后截取屏幕截图

node.js - 超过 30000 毫秒的 Puppeteer 导航超时

javascript - 如何使用 Puppeteer 抓取 Reddit 页面?

javascript - Puppeteer 记录在 page.evaluate

javascript - page.evaluate 和 page.$ 的不同行为以及后续函数

javascript - 使用 Puppeteer 进行并发页面抓取

typescript - 有什么方法可以使用 jest-puppeteer 对片状测试进行重试?

node.js - MongoClient.connect 仅一次

javascript - Puppeteer 生成的 PDF 复制/粘贴文本会产生奇怪的字符

javascript - 启动后如何开启 headless 功能?