CSS:WEBサイト印刷時にページが切れる・崩れる・消える現象の対策
WEBサイトを制作していると、ページを印刷しようとしたときに一部分が消えたり、縦が切れたりしてしまうことがあるので、その対策メモ。
overflowプロパティに初期値(visible)以外を指定していることが原因でした。
以下コード。 印刷用CSS(@media print)にて、初期値であるvisibleを指定することで解決。
/* 印刷用 */ @media print { body{ overflow-y: visible; overflow-x: visible; } .divMain{ overflow-y: visible; } }
私はだいたい全体用CSSで「overflow-y:hidden; overflow-x:hidden;」と指定して、 各ページのスクロール部分で「overflow-y:auto;」と指定することが多いので、上記CSSのようになります。
ちなみに通常の「.divMain」CSSの下に記入しないと読み込み順的に反映されないので注意。
フッターを下部固定するために「min-height:calc(100vh - 500px);」などを指定していると、印刷時にフッターが半端に2枚目にはみ出たりするので、そういうときは印刷用CSSで「min-height:0;(初期値)」にしましょう。
反映されないときはキャッシュを消してみる。
あと検索していて見つけた興味深い印刷用プロパティ。
印刷時の改ページ位置を指定する。
たとえば下記のように指定すると、印刷時にh2タグごとにページが区切られる。
@media print { h2 { page-break-before: always; } }
※ always:強制的に改ページする
普通のWEBページならあまり出番はなさそうだけれど、章ごとに印刷するというときは便利かも。(そんな場面あるのか?) そのほかの値は下記リンク内参照。 http://www.htmq.com/style/page-break-before.shtml