gpt4 book ai didi

带有 float 的 HTML/CSS 打印分页符不起作用(例如 : bootstrap)

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:22 24 4
gpt4 key购买 nike

注意:自己提问和回答,因为我花了 3 天时间尝试不同的方法来找到解决方案,希望这对某人有所帮助。之前已经问过这个问题,但它们很旧,答案不清楚或不令人满意。

尝试在打印具有 float 的元素时添加分页符,例如:使用 bootstrap 网格,是行不通的。分页符被忽略。

<div style="float:right;">floating div</div>

<div class="col-xs-12">
<div class="row">
<div class="col-xs-12 break-after">
Add page break after this element when printing
</div>
<div class="col-xs-12">
This should be printed on next page
</div>
</div>
</div>

<style type="text/css">
.break-after {
page-break-after: always;
}
</style>

最佳答案

首先,分页符在绝对定位的元素内不起作用,因此请确保您的分页符不在一个元素内。

现在,由于 float 导致分页符被忽略,我们需要清除 float 。

问题是 clear: both;如果带有 page-break-after: always; 的元素不起作用是一个 float (例如: Bootstrap 中的 .col-xs-12)。

诀窍是用 clear 添加 2 个新的 div和 page-break在要添加分页符的 div 之后:

<div class="page-break-clear"></div>
<div class="page-break">&nbsp;</div>

<style type="text/css">
.page-break-clear {
clear: both;
}
.page-break {
page-break-after: always; /* depreciating, use break-after */
break-after: page;
height: 0px;
display: block!important;
}
</style>

综合:

<div style="float:right;">floating div</div>

<div class="col-xs-12">
<div class="row">
<div class="col-xs-12 break-after">
Add page break after this element when printing
</div>
<!-- These 2 new added divs will clear float and add the page break -->
<div class="page-break-clear"></div>
<div class="page-break">&nbsp;</div>

<div class="col-xs-12">
This should be printed on next page
</div>
</div>
</div>

<style type="text/css">
.page-break-clear {
clear: both;
}
.page-break {
page-break-after: always; /* depreciating, use break-after */
break-after: page;
height: 0px;
display: block!important;
}
</style>

作为旁注:我建议删除 page-break-after .break-after 的 CSS问题中提供的类,以防止在分页符上加倍,因为 float 被删除并且它确实有效。

此外,如果您使用 jquery 并且不想手动添加这两个分页 div,为了让您的生活更轻松,只需运行以下代码,它会自动将它们添加到类为 .break-after 的所有元素之后。 :

$('.break-after').after('<div class="page-break-clear"></div><div class="page-break">&nbsp;</div>');

关于带有 float 的 HTML/CSS 打印分页符不起作用(例如 : bootstrap),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47205328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com