HTML+CSS 分页符将文本字符切成两半(@media print)
HTML+CSS page breaks cutting text characters in half (@media print)
切换到嵌套有序列表后,每个列表都有一个或多个 li 和 div,我变得可怕 page-breaks 将文本切成两半.如果内容有 page-break,我不介意,但在页边距中打断 mid-text-characters 是不可接受的。
示例 html(arbitrarily-deep ol + li + ol + ... 直到运行时才知道嵌套 - 在反应中生成单页内容):
我已经放置了 css 以避免 page-breaks 超过图像,class "avoid-break" 也放在问题 classes 中:
.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>
文本本身被剪切的损坏的打印布局示例:
div 的 class "avoid-break" 的另一个示例,带有图像和标题(段落):
page-break 剪切具有 avoid-break CSS class 的问题文本的另一个示例:
我想先构建一个 MVP,所以如果需要使用最新的 chrome/firefox 版本,我现在可以接受。
如何阻止浏览器在分页符处将文本字符切成两半?
我在这个应用程序中有很多代码,而且大部分与这个问题完全无关,所以我试图将其排除在外,但如果您需要额外的信息,请提出要求,我会提供。
谢谢!
显然,在尝试调试它并制作一个更简单的示例以供重现后大约 6 个小时后,我发现这个简单的示例始终有效,那是因为我没有放置包含 div印刷品有 overflow:auto.
只需将其更改为 溢出:可见,所有中断都有效!
显然这是因为浏览器不支持任何其他类型的溢出。
感谢大家抽出宝贵时间,如果不是您一直要求提供可重现的示例,我们就不会修复此问题! :)
切换到嵌套有序列表后,每个列表都有一个或多个 li 和 div,我变得可怕 page-breaks 将文本切成两半.如果内容有 page-break,我不介意,但在页边距中打断 mid-text-characters 是不可接受的。
示例 html(arbitrarily-deep ol + li + ol + ... 直到运行时才知道嵌套 - 在反应中生成单页内容):
我已经放置了 css 以避免 page-breaks 超过图像,class "avoid-break" 也放在问题 classes 中:
.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>
文本本身被剪切的损坏的打印布局示例:
我想先构建一个 MVP,所以如果需要使用最新的 chrome/firefox 版本,我现在可以接受。
如何阻止浏览器在分页符处将文本字符切成两半?
我在这个应用程序中有很多代码,而且大部分与这个问题完全无关,所以我试图将其排除在外,但如果您需要额外的信息,请提出要求,我会提供。
谢谢!
显然,在尝试调试它并制作一个更简单的示例以供重现后大约 6 个小时后,我发现这个简单的示例始终有效,那是因为我没有放置包含 div印刷品有 overflow:auto.
只需将其更改为 溢出:可见,所有中断都有效!
显然这是因为浏览器不支持任何其他类型的溢出。
感谢大家抽出宝贵时间,如果不是您一直要求提供可重现的示例,我们就不会修复此问题! :)