ash*_*exm 20 html css printing page-break
我有以下HTML,我希望避免在跨越多个页面时被分解.问题是,如果我使用page-break-before或之后,它会将每个元素放在它自己的页面上.我有另外一个问题是,假如我display: block
在任的cell
CSS类或wrap
类中,DIV或LI仍然被打散.我有一个打印媒体CSS文件和屏幕的CSS文件.我想保持<li class="cell">
元素及其内容不被分解.
<div class="pad">
<h1 style="text-align: center; margin: 10px 0">
Work Orders for Jan 05, 2011
</h1>
<p class="printHidden">
<a href="/orders/print-all/date/2011-01-05">Print All Work Orders</a>
</p>
<ul class="workorders">
<li class="cell">
<div class="wrap" id="146">
<div class="scheduled">
<p>
<strong>Work Order:</strong> <a href="/orders/view/work-order/146">158801</a>
</p>
<p>
<strong>Client:</strong> Client Name
</p><br>
<b>Resources</b>
<ul>
<li>
<a href="/resources/view/resource-id/5" id="Person-5">Mikell McLaindon</a>
</li>
<li>
<a href="/resources/view/resource-id/9" id="Person-9">Jose Copper</a>
</li>
</ul>
</div>
<div class="unschedule printHidden">
<h1 style="text-align: center; margin: 10px 0 10px; font-size: 12px; font-weight: bold;">
Unschedule Resource for 15880-PW
</h1>
</div>
</div>
</li>
{... removed for brevity ...}
Run Code Online (Sandbox Code Playgroud)
mVC*_*Chr 26
编辑:正确的解决方案
请参阅:http://www.w3schools.com/css/pr_print_pagebi.asp 因此,如果您将以下内容添加到CSS中,它应该可以解决您的问题:
@media print
{
div.pad { page-break-inside:avoid; }
}
Run Code Online (Sandbox Code Playgroud)
现在所有主流桌面浏览器都支持此功能.
然而,也有page-break-after:avoid
和page-break-before:avoid
您可以添加到该范围内的每一个元素.pad
类,以产生一些老版本的浏览器相同的结果.
@media print
{
div.pad * {
page-break-after:avoid;
page-break-before:avoid;
}
}
Run Code Online (Sandbox Code Playgroud)
http://www.w3schools.com/Css/pr_print_pagebb.asp
http://www.w3schools.com/css/pr_print_pageba.asp
老答案:
听起来你正试图在一个不适合页面的页面上放置东西.我会尝试添加样式表media="print"
...
<link rel="stylesheet" href="css/print.css" type="text/css" media="print" charset="utf-8" />
Run Code Online (Sandbox Code Playgroud)
...减少所有这些元素的字体大小,填充等,以便您可以在此部分之前放置分页符并使其适合页面.