我正在使用基于 SVG 的图表制作仪表板。当我打印页面时,图表会四处移动以防止在其中发生分页符。这是不可取的,并且会破坏我的布局,但我无法弄清楚是什么原因造成的。
例子:
- 普朗克
- 弹出预览
- 打印(只看预览,实际上不必打印)
结果:每页 2 个完整的框,边距不均匀
预期:每页 2.5 个盒子,边距均匀
任何帮助将不胜感激
编辑:这是我正在谈论的画廊。显然这个问题不会影响所有浏览器/操作系统?
这是不可能的。
根据http://www.w3.org/TR/CSS2/page.html#allowed-page-breaks,这些是元素可以在页面之间中断的唯一情况:
在正常流程中,分页符可能出现在以下位置:
- 在块级框之间的垂直边距中。当此处发生非强制分页时,相关“margin-top”和“margin-bottom”属性的使用值设置为“0”。当此处发生强制分页时,相关'margin-bottom'属性的使用值设置为'0';相关的“margin-top”使用值可以设置为“0”或保留。
- 在块容器框内的行框之间。
- 如果块容器框的内容边缘与其子内容的外边缘(块级子项的边距边缘或内联级子项的线框边缘)之间存在(非零)间隙。
你想要(2),你得到(1)。
问题是<svg>
元素被替换了内容。
根据http://www.w3.org/TR/CSS2/visuren.html#block-boxes,被替换的元素不是块容器框:
除了后面章节介绍的表格盒和替换元素外,块级盒也是块容器盒。
这意味着<svg>
不满足(2),所以你不能得到你想要的。
我通过应用于position: absolute
父容器来解决它。