【问题标题】:Which browsers support page break manipulation using CSS and the page-break-inside element?哪些浏览器支持使用 CSS 和 page-break-inside 元素进行分页操作?
【发布时间】:2010-09-12 04:17:25
【问题描述】:

我正在尝试使用 page-break-inside CSS 指令,其类将附加到 div 标签或 table 标签(我认为这可能只适用于块元素,在这种情况下它会必须是桌子)。

我已经尝试了所有应该准确描述如何做到这一点的教程,但没有任何效果。这是浏览器支持的问题还是有人真正得到了这个工作,CSS 的确切位看起来像这样:

@media print {

  .noPageBreak {
     page-break-inside : avoid;
  }
}

【问题讨论】:

  • Firefox 从 v19 开始添加支持。见herehere

标签: css page-break-inside


【解决方案1】:

Safari 1.3+Opera 9.2+KonquererIE8 至少在某种程度上都支持它。

Firefox 显然仍然没有。

【讨论】:

【解决方案2】:

我正在尝试使用 page-break-inside CSS 指令,其类将附加到 div 标签或 table 标签(我认为这可能只适用于块元素,在这种情况下它会必须是桌子)。

首先,无需猜测。看看the specification,你会发现它确实只适用于块级元素。

其次,<div> 元素通常是块级元素,因此将page-break-inside 应用于<div> 元素没有问题。

最后,您不需要将其包装在@media 中。如果您只想将独立于媒体的规则应用于一种媒体,则只需要@media,例如,如果您只想将display: block 用于一种媒体。在这种情况下,您无需对其他媒体隐藏这些规则,因为它们只会应用于分页媒体。

【讨论】:

    【解决方案3】:

    Safari 1.3 and later支持page-break-inside

    So does Konqueror.

    【讨论】:

      【解决方案4】:

      Safari 1.3 及更高版本(不知道 4) 支持 page-break-inside(尝试一下,或查看此处:http://reference.sitepoint.com/css/page-break-inside)。 Firefox 3 或 IE7 也不行(不知道 8)。

      实际上,对这个属性的支持是参差不齐的,在这一点上使用它根本没有意义。如果您的访问者中有 10% 的浏览器可以支持此功能,那您就很幸运了。

      我使用的解决方案是添加

      page-break-after:always

      到某些 div,或在需要中断的位置添加“分页符”div。我知道,这很笨拙,因为它不能完全满足您的要求,并且会导致内容无法到达打印页面的底部,但不幸的是没有更好的解决方案(证明我错了!)。

      另一种方法是创建一个样式表,删除所有无关元素 (display:none) 并使主要内容在一个主列中流动。基本上,将其转换为单列、纯文本文档。

      最后,在为打印机设计样式时避免使用浮点数和列,这会使 IE(和 FF)表现得古怪。

      【讨论】:

      • 这有什么更新吗?我似乎无法让它在 Chrome 31 上为我的图像工作
      【解决方案5】:

      从初步搜索中,很难找到有关浏览器对此支持的最新统计数据,但似乎 Firefox 4beta6 支持它而 Chrome 7 不支持。 Chrome 还会在一行文本的中途分页,以便文本的一部分出现在一个页面上,而部分文本出现在下一个页面上。一反常态地缺乏对细节的关注,但我猜谷歌和苹果都不关心打印的东西。

      Firefox 4 还为您的打印添加了一些漂亮的页眉和页脚,包括 url、页面标题、站点标题、页数和时间。不错。

      【讨论】:

        【解决方案6】:
        • Firefox does not support this 截至 2010 年 11 月 30 日,因此不会在 Firefox 4 中。
        • IE8 does support page-break-inside: avoid - 但是当我在 IE9 上尝试这个时,它在避免分页方面并不是很成功(这可能是一种回归,或者 IE8 也只能在非常简单的情况下避免分页)。
        • AFAIK 它在任何 webkit 浏览器中都不起作用;当然不是 chrome。
        • 它实际上可以在 Opera 中运行,甚至在真实站点上也是如此。

        【讨论】:

          【解决方案7】:

          作为Eamon Nerbonne's answer 进一步了解 IE 渲染 (IE8+) 的更多信息,您需要确保浏览器处于标准模式。 This article on MSDN 显示了必要的内容 - 在您的 html 中包含一个元标记以强制解决问题:

          <meta http-equiv="X-UA-Compatible" content="IE=8" />
          

          感觉很笨拙,但你有它...似乎更一致地工作。

          【讨论】:

            猜你喜欢
            • 2011-01-03
            • 1970-01-01
            • 2011-01-26
            • 2023-04-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多