哪些浏览器支持使用CSS和page-break-inside元素进行分页操作?

时间:2020-03-06 14:34:01  来源:igfitidea点击:

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

我已经尝试了所有应该准确描述如何执行此操作的教程,但是没有任何效果。这是浏览器支持的问题还是有人真正可以使用此功能,CSS的确切内容如下所示:

@media print {

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

解决方案

Safari 1.3 +,Opera 9.2 +,Konquerer和IE8都至少在一定程度上支持它。

Firefox显然仍然没有。

I'm trying to use the page-break-inside CSS directive, the class of which is to be attached to a div tag or a table tag (I think this may only work on block elements, in which case it would have to be the table).

首先,无需猜测。只要看一下规范,我们就会发现它确实仅适用于块级元素。

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

最后,我们无需将其包装在@ media中。仅在要将与媒体无关的规则仅应用于一种介质时才需要使用@media,例如,如果仅对一种介质使用display:block。在这种情况下,我们无需将这些规则隐藏在其他媒体上,因为它们反正只会应用于分页媒体。

Safari 1.3及更高版本支持page-break-inside

Konqueror也是如此。

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,或者在我们要休息的地方添加" page-breaker" div。我知道这很麻烦,因为它不能完全满足要求,并导致内容无法到达打印页面的底部,但是不幸的是,没有更好的解决方案(请证明我错了!)。

另一种方法是创建一个样式表,该样式表将删除所有无关的元素(" display:none"),并使主要内容流入一个主列。基本上,将其变成单列纯文本文档。

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

从初步搜索中,很难找到有关浏览器支持的最新统计信息,但似乎Firefox 4beta6支持该功能,而Chrome 7不支持。 Chrome还会在一行文本的中途中断页面,因此文本的一部分显示在一页上,而一部分显示在下一页上。缺乏个性的人缺乏对细节的关注,但我想Google和Apple都不关心打印东西。

Firefox 4还为打印内容添加了一些漂亮的页眉和页脚,包括url,页面标题,网站标题,页数和时间。好的。

  • Firefox从2010-11-30开始不支持此功能,因此在Firefox 4中将不支持。
  • IE8确实支持page-break-inside:避免-但是当我在IE9上尝试过这种方法时,它在避免分页符方面并不是很成功(这可能是回归,或者IE8也只能在非常简单的情况下避免分页符) )。
  • AFAIK在任何Webkit浏览器中均不起作用;当然不是铬。
  • 它实际上可以在Opera中运行,甚至可以在实际站点上运行。