Come nascondo un elemento durante la stampa di una pagina Web?


440

Ho un link sulla mia pagina web per stampare la pagina web. Tuttavia, il collegamento è visibile anche nella stampa stessa.

Esiste un codice JavaScript o HTML che nasconderebbe il pulsante di collegamento quando faccio clic sul collegamento di stampa?

Esempio:

 "Good Evening"
 Print (click Here To Print)

Voglio nascondere questa etichetta "Stampa" quando stampa il testo "Buona sera". L'etichetta "Stampa" non deve apparire sulla stampa stessa.

Risposte:


743

Nel tuo foglio di stile aggiungi:

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

Quindi aggiungi class='no-print'(o aggiungi la classe no-print a un'istruzione di classe esistente) nel tuo HTML che non desideri visualizzare nella versione stampata, come il tuo pulsante.


17
Questa risposta non è completa Devi avere due sezioni multimediali. @mediastampa e @mediaschermo. Nella sezione stampa, inserisci gli stili per la stampa. Nella sezione dello schermo, inserisci gli stili per la stampa dello schermo. Puoi anche avere più sezioni dello schermo per risoluzioni diverse. Fondamentalmente se aggiungi solo ciò che viene fornito in questa risposta, non funzionerà. Credimi, ci ho provato. Come sono riusciti a ottenere 69 voti positivi?
Codeguy007,

6
in realtà, funziona se si utilizza semplicemente il codice che viene fornito. ho appena provato in Firefox. quindi, almeno nei browser moderni questa è la soluzione.
luschn,

8
Ho provato a nascondere un <div> con diversi sotto-elementi all'interno. Il problema era che alcuni elementi erano ancora visibili sulla stampa. La soluzione era quella di usare questo css:@media print { .no-print, .no-print * { display: none !important; } }
Philipp

6
Questo potrebbe funzionare o meno a seconda del supporto specificato. Ad esempio, per combinare entrambi gli stili di schermo e stampa in un foglio di stile, quindi utilizzare le query multimediali all'interno di quel foglio di stile, come suggerisce questa risposta, è necessario specificare entrambi i tipi di supporto "schermo" e "stampa":<link rel="stylesheet" href="all.css" media="screen, print" type="text/css">
Clint Pachl

5
@ Codeguy007: non capisco il tuo punto. È necessario solo @media screense si desidera definire gli stili solo schermo ma non è questo il caso qui: per impostazione predefinita vengono visualizzati tutti gli elementi e, definendo uno stile di sola stampa che nasconde l'elemento, è perfettamente sufficiente per farlo apparire sullo schermo .
Chiccodoro,


169

La migliore pratica è utilizzare un foglio di stile specifico per la stampa e impostarne l' mediaattributo print.

In esso, mostra / nascondi gli elementi che desideri stampare su carta.

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

9
Qui dovresti anche avere CSS per non visualizzare altri contenuti wrapper, cambiare la famiglia di caratteri in un valore migliore, rimuovere le larghezze per consentire l'uso completo della pagina. Se imposti il ​​tuo foglio di stile principale su media = "screen" puoi considerare il tuo foglio di stile di stampa come un nuovo playgound.
Steve Perks

2
Assolutamente. E con questo approccio, puoi semplicemente rimuovere "Fai clic qui per la versione stampabile" o aggiungere "Questa pagina è stampabile" o simile. La buona pratica è, come ha detto Steve Perks, rimuovere tutti i contenuti non consociati come la navigazione, le pubblicità e simili. Includi solo il contenuto principale della pagina.
Arve Systad,

39

Ecco una semplice soluzione mettere questo CSS

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

e qui è l'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
Una classe sarebbe una scelta migliore di un ID qui, per la semplice ragione che se usi un ID allora puoi applicare questa regola solo a una cosa per pagina. Una lezione ti permetterebbe di applicarla dove necessario.
Nick F

12

FILE CSS

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


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

HEADER HTML

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

ELEMENTO

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

10

È possibile posizionare il collegamento all'interno di un div, quindi utilizzare JavaScript sul tag anchor per nascondere il div quando si fa clic. Esempio (non testato, potrebbe essere necessario modificarlo ma si ottiene l'idea):

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

Il rovescio della medaglia è che una volta cliccato, il pulsante scompare e perdono quell'opzione sulla pagina (c'è sempre Ctrl + P però).

La soluzione migliore sarebbe quella di creare un foglio di stile di stampa e all'interno di quel foglio di stile specificare lo stato nascosto printOptiondell'ID (o come lo si chiama). Puoi farlo nella sezione head dell'HTML e specificare un secondo foglio di stile con un attributo multimediale.


6

La cosa migliore da fare è creare una versione "solo stampa" della pagina.

Oh, aspetta ... questo non è più il 1999. Utilizzare un CSS di stampa con "display: none".


1
c'è ancora un certo valore nelle versioni stampabili perché mostra chiaramente all'utente ciò che otterranno quando stampano e che può essere abusato delle tecniche CSS
annakata,

1
aggiunto a ciò, è possibile includere contenuti aggiuntivi in ​​una versione stampata come riferimenti di collegamenti, piè di pagina, ecc. Nei prossimi giorni, gran parte di questo sarà raggiungibile anche tramite CSS.
Steve Perks,

8
@annakata: l'utente può già ottenerlo utilizzando "Anteprima di stampa" sul proprio browser. Come bonus, in realtà è quello che serve.
ricorsivo


3

La risposta accettata da diodus non funziona per alcuni, se non per tutti noi. Non riuscivo ancora a nascondere il mio Stampa questo pulsante dall'andare sulla carta.

La piccola modifica da parte di Clint Pachl della chiamata al file css aggiungendo

      media="screen, print" 

e non solo

      media="screen"

sta risolvendo questo problema. Quindi, per chiarezza e perché non è facile vedere Clint Pachl nascosto ulteriore aiuto nei commenti. L'utente dovrebbe includere ", stampa" nel file CSS con la formattazione desiderata.

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

e non solo il media predefinito "schermo".

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

Penso che risolva questo problema per tutti.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.