大きなアイテムのコレクションを取得し、CocoaのWebViewでHTMLにポップするソフトウェア用のプラグインを作成しています(WebKitをレンダラーとして使用しているため、基本的にこのHTMLファイルはサファリ)。
それが作るDIVは動的な高さですが、あまり変化しません。通常は約200ピクセルです。とにかく、ドキュメントごとにこれらのアイテムの約600で、私はそれを印刷するのに非常に苦労しています。運がよければ、すべてのページの下部と上部にエントリが半分に切り刻まれているため、実際に印刷物を使用するのは非常に困難です。
改ページ前、改ページ後、改ページ内、およびこれら3つの組み合わせを使用しようとしました。 WebKitが指示を適切にレンダリングしていないのかもしれません。または、指示の使用方法が理解できないのかもしれません。とにかく、私は助けが必要です。印刷するときに、DIVの半分をカットしないようにするにはどうすればよいですか?
これは動作するはずです:
@media print
{
div{
page-break-inside: avoid;
}
}
注意してください 現在のブラウザーサポート(12-03-2014) :
部分的な解決策のみ:これをIEで機能させるための唯一の方法は、各divを独自のテーブルでラップし、回避するためにテーブルの改ページを設定することでした。
page-break-inside: avoid;
はwkhtmltopdfの使用で問題を引き起こしました。
テキストが途切れないようにするには、テキストを含むdivのCSSにdisplay: table;
を追加します。
これがあなたにも役立つことを願っています。 JohnSに感謝します。
改ページ:回避;間違いなくwebkitでは機能しません。実際、5年以上前から既知の問題でした https://bugs.webkit.org/show_bug.cgi?id=5097
私の研究が行っている限り、これを達成するための既知の方法はありません(私は自分のハックを理解することに取り組んでいます)
私があなたに与えることができるアドバイスは、FFでこの機能を達成するために、あなたがしないコンテンツをラップすることです.DIV(または任意のコンテナ)内でオーバーフローすることは決して避けたくないです:autoコンテナのサイズを小さくしすぎると表示されます)。
悲しいことに、FFは私がこれを達成することができた唯一のブラウザーであり、webkitは私がより心配しているものです。
私には同じ問題がありますが、まだ解決策はありません。 page-break-insideはOperaではなくブラウザでは機能します。別の方法として、divのすべての子要素でpage-break-after:avoid;を使用してtogehter ...を保持することもできますが、私のテストでは、例えば、回避属性は機能しません。 Firefoxで...
すべてのppularブラウザで機能するのは、たとえば改ページ後:常に
改ページの可能な値は次のとおりです。auto, always, avoid, left, right
絶対に配置された要素には改ページ後プロパティを使用できないと思います。
私が遭遇した落とし穴の1つは、「overflow」属性が「auto」に設定されている親要素でした。これは、印刷バージョンのpage-break-inside属性を持つ子div要素を無効にします。それ以外の場合、page-break-inside: avoid
はChromeで正常に機能します。
私の場合、選択したdivをpage-break-inside:avoidに設定し、すべての要素をdisplay:inlineに設定することにより、Webkitの改ページの問題を修正することができました。このように:
@media print{
* {
display:inline;
}
script, style {
display:none;
}
div {
page-break-inside:avoid;
}
}
Page-break-propertiesは(webkitの)インライン要素にのみ適用できるようです。必要な特定の要素にdisplay:inlineのみを適用しようとしましたが、うまくいきませんでした。唯一機能したのは、すべての要素にインラインを適用することでした。私はそれが物を台無しにしている大きなコンテナdiv 'の1つだと思います。
誰かがこれを拡張できるかもしれません。
@media print{
/* use your css selector */
div{
page-break-inside: avoid;
}
}
すべての新しいブラウザで、このソリューションは機能します。 caniuse.com/#search=page-break-insideをご覧ください