23

複数のページにまたがるときに分割されないようにしたい次のHTMLがあります。問題は、page-break-beforeまたはafterを使用すると、各要素が独自のページに配置されることです。私が抱えているもう1つの問題は、 CSSクラスまたはクラスdisplay: blockのいずれかに設定した場合でも、DIVまたはLIが分割されることです。印刷メディアのCSSファイルと画面用のCSSファイルもあります。要素とその内容が壊れないようにしたい。cellwrap<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 ...}
4

1 に答える 1

33

編集:適切なソリューション

参照:http ://www.w3schools.com/css/pr_print_pagebi.asp したがって、CSSに以下を追加すると、問題が修正されるはずです。

@media print
{
    div.pad { page-break-inside:avoid; }
}

現在、すべての主要なデスクトップブラウザがこれをサポートしています。

ただし、一部の古いバージョンのブラウザで同じ結果を生成するために、クラス内のすべての要素に追加できるものもpage-break-after:avoidあります。page-break-before:avoid.pad

@media print
{
    div.pad * { 
        page-break-after:avoid;
        page-break-before:avoid;
    }
}

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" />

...これにより、これらすべての要素のフォントサイズ、パディングなどが縮小され、このセクションの前にページ分割を配置して、ページに収めることができます。

于 2011-01-18T23:28:20.077 に答える