CSS印刷ページ





多くのサイトにはページの印刷可能なバージョンを表示する機能がありますが、それらを使用することは常に便利ですか?



文書を印刷する際の主な問題は、印刷の質の低さ、不必要な情報(インターフェイス要素など)の存在、および色の誤りです。 スタイリングには、 @ mediaルールを使用できます。



@media print { }
      
      







ユーザーが画面に表示されたデザインでページを印刷したい場合、スクリーンショットを撮って印刷します。 印刷バージョンは、紙からテキストを簡単かつ快適に読むために設計されています。 したがって、まず、ページから余分なものをすべて削除する必要があります:メニュー、大規模なヘッダーまたはフッター、背景画像など、ヘッダー、画像付きコンテンツ、ウェブサイトのロゴ、ページURLのみを残します。 たとえば、次のコードは、サイトのサイドバー、ヘッダー、フッターだけでなく、H1ヘッダーも非表示にします。



 h1, div#header, div#sidebar, div#footer { display: none; }
      
      







ページ印刷ルール



1.最新のブラウザは背景画像を削除できます。 ただし、 background-image:noneを追加することをお勧めします。これにより、古いブラウザでこれを行うことができます。



2.サイズをピクセル単位で割り当てると、印刷されたページと画面上の表示が一致しない場合があります。 したがって、インチ、センチメートル、またはパーセンテージを使用する価値があります。



3.次のコードを使用すると、用紙をクリックできないため、ハイパーリンクの代わりに完全なURLを表示できます。



 a:after {content:" <" attr(href) ">";
      
      







コードを少し変更することにより、外部リンクのみにURL表示を追加できます。



 a[href^=http]:after {content:" <" attr(href) ">";
      
      







4.大きなテキストの場合、部分に分割することが適切な場合があります。 次のコードは、各H3ヘッダーのコンテンツを分割し、新しいページに印刷します。



 h3 { page-break-before: always; }
      
      







また、このコードは、新しいページから各記事を印刷するのに役立ちます;ブログエントリのリストを印刷するときに役立ちます。



 article + article { page-break-before: always; }
      
      







5.暗いまたは明るいデザインのサイトのスタイルを、標準の配色(白い背景に黒のテキスト)に再割り当てすることをお勧めします。 これは読みやすく、消耗品をユーザーのプリンターに保存するのに便利です。



正しい表示



上記のように、最新のブラウザは印刷時に不要な要素を削除できますが、これは必ずしも必要ではありません。 Firefoxでは、ユーザーは結果の外観を制御できます。ChromeとSafariでは、以下のコードを使用して元のスタイルを表示できます。



 * { -webkit-print-color-adjust: exact; }
      
      







実際の動作:







印刷品質



多くの場合、印刷結果は画面上の元の結果と非常に異なっています。 この一般的な理由の1つを簡単な例で分析します。 暗い背景に明るいテキストがあります。







次のCSSを使用します。



 header { background: #000; color: #fff; padding: 1rem; font-family: Avenir, Arial, sans-serif; }
      
      







ブラウザは、印刷バージョンを通常にしようとします。







ページ上にロゴなどの画像がある場合、ブラウザはそれを一切修正せず、ひどく判明します。







透明性のあるベクター画像をロゴとして使用すると、すべてがさらに悪くなります。







この恐怖は、CSS3フィルターを使用することで回避できます。



 @media print { header { background: none; color: #000; } header img { -webkit-filter: invert(100%); filter: invert(100%); } }
      
      







判明した:







Firefoxの場合、SVGを使用できます。



 <svg xmlns="http://www.w3.org/2000/svg"> <filter id="negative"> <feColorMatrix values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /> </filter> </svg>
      
      







CSS:



 @media print { header { background: none; color: #000; } header img { filter: url(inverse.svg#negative); -webkit-filter: invert(100%); filter: invert(100%); } }
      
      







IE9の場合、 Lea Verouのソリューション:



 <!--[if IE 9]> <style> @media print { header:after { content:""; display: block; height: 1px; width: 1px; position: absolute; top: 100px; right: 100px; outline: 100px solid invert; } } </style> <![endif]-->
      
      







使用した材料:




All Articles