切换到嵌套有序列表后,每个列表都有一个或多个li和一个 div,我得到可怕的分页符,将文本切成两半。我不介意内容是否有分页符,但是在页边距中将中间文本字符打断是不可接受的。
示例 html(任意深度 ol + li + ol + ... 嵌套直到运行时才知道 - 反应中生成的单页内容):
我已经放置了css以避免图像分页符和问题类中的“avoid-break”类:
.TestEditorQuestion {
position: relative;
border: 3px;
background-color: #eee;
border-color: gray;
padding-left: 0.8rem;
padding-right: 0.8rem;
padding-top: .08rem;
padding-bottom: .08rem;
margin: 5px;
text-align: left;
border-radius: 10px;
width: 99%;
display: block;
height: 10%;
box-sizing: border-box;
}
... lots of css code that doesn't affect this
avoid-break {
break-inside: avoid;
page-break-inside: avoid; // for older browsers
}
@media print {
.no-print,
button {
display: none !important;
}
@page {
size: A4;
margin: 1.5cm;
@bottom-center {
content: counter(page) "/" counter(pages);
}
}
}
<ol>
...
<li>
<div class="TestEditorQuestion avoid-break">
<p>() Dois ou mais .... (long text) ...</p>
</div>
</li>
<li>
<div class="TestEditorImage avoid-break">
<img ...>...</img>
<p> ... long question text ...</>
</li>
....
</ol>
文本本身有剪切的损坏打印布局示例:
另一个带有图像和标题(段落)的类“avoid-break”的div的 示例:另一个分页符剪切具有avoid-break CSS类的问题文本的示例:
我想先构建一个 MVP,所以如果需要使用最新的 chrome/firefox 版本,我现在可以接受。
如何阻止浏览器在分页符处将文本字符切成两半?
我在这个应用程序中有很多代码,而且大部分都与这个问题无关,所以我试图把它排除在外,但如果你需要额外的信息,请请求它,我会提供。
谢谢!