【CSS】印刷時にある要素とその配下だけを印刷するシンプルなスタイルの紹介

  • 2024年9月19日
  • CSS

 webページをユーザーが印刷する際、印刷対象となる要素を絞り込みたくなる場合があります。例えばメニュー、ヘッダー、フッター、サイドバーなどのwebページを便利にするためのパーツを隠してメインのコンテンツのみを印刷できるようにする、といった具合です。これを簡素なCSSで実装する方法を紹介します。

 CSSの例が次です。#print-tgtの部分には任意のセレクタを使えます。

@media print {
  *:not(#print-tgt):not(:has(#print-tgt)):not(#print-tgt *){
    display: none;
  }
}

 印刷時にだけ表示を変更するために@media printを使います。 @media print は印刷時にだけ適用されるCSSルールを指定するためのものでwebページの通常表示には影響しません。
*:not(#print-tgt):not(:has(#print-tgt)):not(#print-tgt *) というセレクタで、#print-tgt というIDが付与された要素以外の全てを非表示にしています。

  • *:not(#print-tgt)#print-tgt 要素自体を非表示にしないようにします。
  • *:not(:has(#print-tgt)) は、#print-tgt を含む親要素が印刷対象から除外されるのを防ぎます。
  • *:not(#print-tgt *) は、#print-tgt の子要素も印刷対象から除外されないようにしています。

 このようにすると#print-tgt で指定した要素とその中に含まれるコンテンツだけが印刷されるようにできます。このコードの特に便利な点は印刷対象要素のdisplayのスタイルを壊さないところにあります。表とdivなどが混在していると個々のdisplayを指定するのは難しいです。これを印刷対象の要素のスタイルを変えないことで回避しています。

 例ではIDで指定していますが、特定の要素が指定できるならばセレクタは自由です。適宜#print-tgtの部分を変えることで自由に使えます。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG