印刷時の余白幅指定

サイトをプリントアウトして使いたい、との要望が、たまにあります。

こちらの環境では問題なくプリントできるのでOK!と思っていたら、

ページが半分までしか表示されない。

切り目の部分が画像と文字が重なっておかしくなっている。

など、ブラウザによって、さらに設定によって不具合があることがしばしば。

 

そこで備忘録として、私なりにもっとも無難に対処できる方法を記載します。

 

 

 

印刷時の余白幅指定

IEはデフォルトの余白幅が広いため、

印刷プレビューで表示が収まりきらない場合、

ページの横幅に合わせてCSSで余白を調整します。

 

/* 印刷時の余白幅指定 */
@page {
	margin: 12.7mm 9.7mm;
}

 

“縮小して全体を印刷する”機能がないIE6の対応

IE6についてまだ書かなければならなのは残念ですが、それでも対応が必要なケースがあります。

IE6は用紙サイズに合わせて縮小表示を行ってくれませんので、以下のCSSハックで対応するようにします。

/* IE6で印刷時の倍率を指定 */
@media print {
body {
  _zoom: 0.75;
}
}

”_zoom: 0.75;”で印刷時の倍率を指定します。
上記では75%で表示されます。


GoogleChromeでの印刷対応


 背景画像はプリントできるようになりましたが、


調節できる項目がなく、印刷には不向きなブラウザです。


現時点ではおすすめしません。


Firefoxでの印刷対応

Firefoxでは、2~3カラムレイアウトでページが長い場合、

フッターが2枚目の最上部に表示されたり、

コンテンツの親要素にoverflor: auto;を使うと、 間のページが表示されないことがあります。

そのため、Firefoxのみに適応する印刷表示用のCSSを作成します。


フッターが2枚目の最上部に表示される・間のページが表示されない現象を回避する


コンテンツを囲んでいる要素に”display: table;”、 floatを適応している要素に

”display:table-cell;”・”float:none;”・”vertical-align:top;”を指定することで回避できます。

/* Firefox印刷対応 */
/* コンテンツ枠 */
@media print {
#contents, x:-moz-any-link {
        width: 900px;
        height: auto;
        margin: 0px auto;
        padding: 20px;
        clear: both;
        overflow: auto;
        display:table;
}
}

/* サイドナビゲーション */
@media print {
#sidenavi, x:-moz-any-link {
        width: 220px;
        height: auto;
        margin: 0px 0px 20px 0px;
        padding: 0px;
        display:table-cell;
        float:none;
        vertical-align:top;
}
}

/* センターコンテンツ */
@media print {
#center_contents, x:-moz-any-link {
        width: 380px;
        height: auto;
        margin: 0px auto;
        padding: 0px;
        display:table-cell;
        float:none;
        vertical-align:top;
}
}

/* ライトコンテンツ */
@media print {
#right_contents, x:-moz-any-link {
        width: 220px;
        height: auto;
        margin: 0px;
        padding: 0px;
        display:table-cell;
        float:none;
        vertical-align:top;
}
}
 

コメントを残す