Webページの印刷時に要素を非表示にするにはどうすればよいですか?


440

Webページを印刷するためのリンクがWebページにあります。ただし、リンクはプリントアウト自体にも表示されます。

印刷リンクをクリックしたときにリンクボタンを非表示にするJavaScriptまたはHTMLコードはありますか?

例:

 "Good Evening"
 Print (click Here To Print)

「Good Evening」というテキストを印刷するときに、この「Print」ラベルを非表示にしたい。「印刷」ラベルは、印刷物自体には表示されません。

回答:


743

スタイルシートに次を追加します。

@media print
{    
    .no-print, .no-print *
    {
        display: none !important;
    }
}

次にclass='no-print'、ボタンなどの印刷されたバージョンに表示したくないHTMLに、HTMLに追加(またはno-printクラスを追加)します。


17
この答えは完全ではありません。2つのメディアセクションが必要です。@media印刷および@mediaスクリーン。印刷セクションでは、印刷するスタイルを配置します。スクリーンスクリーンセクションでは、スクリーン印刷用のスタイルを配置します。解像度ごとに複数の画面セクションを持つこともできます。基本的に、この回答で与えられたものを追加しただけでは機能しません。私が試した私を信じてください。では、どうしてこれで69票が得られたのでしょうか。
Codeguy007

6
実際には、与えられたコードを使用するだけで機能します。私はFirefoxで試しました。したがって、少なくとも最近のブラウザでは、これが解決策です。
luschn 2013

8
内部にいくつかのサブ要素を持つ<div>を非表示にしようとしました。問題は、いくつかの要素がまだ印刷物に表示されていることでした。解決策はこのcssを使用することでした:@media print { .no-print, .no-print * { display: none !important; } }
フィリップ

6
これは、指定されたメディアに応じて機能する場合と機能しない場合があります。たとえば、この答えが示唆するように、その後、そのスタイルシート内のメディアクエリを使用し、1つのスタイルシートでの画面と印刷の両方のスタイルを組み合わせて、あなたは、「画面」と「印刷」メディアタイプの両方を指定する必要があります<link rel="stylesheet" href="all.css" media="screen, print" type="text/css">
クリントPachl

5
@ Codeguy007:私はあなたの要点を理解していません。@media screen画面のみのスタイルを定義する必要がある場合にのみ必要ですが、ここではそうではありません。デフォルトではすべての要素が表示され、要素を非表示にする印刷のみのスタイルを定義することで、要素を画面に表示するには十分です。 。
チコドロ2013

173

Bootstrap 3には、これと呼ばれる独自のクラスがあります

hidden-print

これは次のように定義されています:

@media print {
  .hidden-print {
    display: none !important;
  }
}

自分で定義する必要はありません。


ブートストラップ4本は、に変更されました:

.d-print-none

優れたBootstrap 4ソリューション。魅力のように機能します。
ディエゴビクタードジーザス

私はこれまでブートストラップソリューションを見逃したなんて信じられません。
ReturnTable

! important助かりました。
Evan Hu

168

ベストプラクティスは、印刷専用のスタイルシート使用し、そのmedia属性をに設定することprintです。

その中で、紙に印刷したい要素を表示/非表示にします。

<link rel="stylesheet" type="text/css" href="print.css" media="print" />

9
ここでは、他のラッパーコンテンツを表示しないcssも必要です。font-familyをより適切な値に変更し、ページを完全に使用できるように幅を削除してください。メインスタイルシートをmedia = "screen"に設定すると、印刷スタイルシートを新しいプレイグラウンドとして扱うことができます。
スティーブPerks

2
もちろんです。そして、このアプローチでは、「ここをクリックして印刷可能バージョンにする」を削除するか、「このページは印刷用ページです」などを追加することができます。Steve Perksが言ったように、ナビゲーション、広告などの不要なコンテンツをすべて削除することをお勧めします。ページの主要コンテンツのみを含めます。
Arve Systad

39

これがこのCSSを置く簡単な解決策です

@media print{
   .noprint{
       display:none;
   }
}

そしてこれがHTMLです

<div class="noprint">
    element that need to be hidden when printing
</div>
<div class="noprint">
    element that need to be hidden when printing
</div>

3
IDを使用する場合、このルールはページごとに1つのものにしか適用できないという単純な理由から、ここではクラスの方がIDよりも優れています。クラスを使用すると、必要な場所にそれを適用できます。
Nick F

12

CSSファイル

@media print
{
    #pager,
    form,
    .no-print
    {
        display: none !important;
        height: 0;
    }


    .no-print, .no-print *{
        display: none !important;
        height: 0;
    }
}

HTMLヘッダー

<link href="/theme/css/ui/ui.print.css?version=x.x.x" media="print" rel="stylesheet" type="text/css" >

素子

<div class="no-print"></div>

10

リンクをdiv内に配置し、アンカータグでJavaScriptを使用して、クリックされたときにdivを非表示にすることができます。例(テストされていない、調整する必要があるかもしれませんが、アイデアはわかります):

<div id="printOption">
    <a href="javascript:void();" 
       onclick="document.getElementById('printOption').style.visibility = 'hidden'; 
       document.print(); 
       return true;">
       Print
    </a>
</div>

欠点は、一度クリックするとボタンが消え、ページ上のオプションが失われることです(ただし、常にCtrl + Pがあります)。

より良い解決策は、印刷スタイルシートを作成し、そのスタイルシート内でprintOptionID(またはそれと呼ぶもの)の非表示ステータスを指定することです。これは、HTMLのヘッドセクションで行い、メディア属性を使用して2番目のスタイルシートを指定できます。


6

最善の方法は、「印刷専用」バージョンのページを作成することです。

ああ、待って...これはもう1999年ではありません。「display:none」で印刷CSSを使用します。


1
CSSテクニックで悪用される可能性がある印刷時に得られるものをユーザーに明確に表示するため、印刷可能なバージョンにはまだ価値があります
annakata

1
それに加えて、リンク参照、フッターなどの追加コンテンツを印刷バージョンに含めることができます。これから数日で、これの多くはcssによっても達成できます。
スティーブPerks

8
@annakata:ユーザーはブラウザの「印刷プレビュー」を使用してすでにそれを取得できます。おまけとして、それが実際の目的です。
再帰的


3

diodusによって受け入れられた答えは、私たち全員ではないにしても、一部では機能しません。まだこのPrintボタンを紙に印刷しないようにすることはできませんでした。

アドオンによるcssファイルの呼び出しのClint Pachlによる少しの調整

      media="screen, print" 

だけでなく

      media="screen"

この問題を解決しています。そのため、わかりやすくするため、およびClint Pachlがコメントに追加のヘルプを非表示にするのは簡単ではないためです。ユーザーは、希望するフォーマットでcssファイルに "、print"を含める必要があります。

     <link rel="stylesheet" href="my_cssfile.css" media="screen, print"type="text/css">

デフォルトのメディアではなく、「画面」のみ。

    <link rel="stylesheet" href="my_cssfile.css" media="screen" type="text/css">

私はこの問題を皆のために解決すると思います。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.