di: Alessandro Fulciniti 29 Agosto 2006
Sono davvero molti i siti che non hanno un CSS per la stampa, con il risultato che i visitatori si trovano a volte delle pagine stampate che decisamente non rendono giustizia alla versione su schermo. Preparare un CSS per la stampa è un operazione piuttosto semplice: in questo articolo vedremo otto consigli pratici per produrne facilmente uno. Cominciamo subito.
La prima cosa da fare nel preparare un CSS per la stampa è decidere se prepararne uno specifico da zero
oppure usare come base il CSS per lo schermo. Tra le due non c'è una scelta migliore in assoluto, e in ogni
caso il CSS per la stampa risultante non richiederà molto lavoro. Personalmente preferisco usare come base
di partenza il CSS per lo schermo così da avvvantaggiarmi un po' e avere una versione stampata che mantiene
una maggiore somiglianza con la versione a schermo. Se dichiariamo nell'head della pagina un CSS senza
specificare il media a cui si riferisce, questo avrà effetto su tutti i media, incluso la stampa. Basterà quindi
definire un CSS per la stampa così da ridefinire quello usato per lo schermo. Ecco un esempio, in cui
il file "main.css" verrà adottato da tutti i media, mentre il file "print.css" è quello specifico per la stampa.
<link rel="stylesheet" type="text/css" href="main.css">
<link rel="stylesheet" type="text/css" href="print.css" media="print">
È importante con questo approccio l'ordine delle dichiarazioni: dato che il CSS per la stampa andrà a ridefinire quello generico, dovrà essere dichiarato per ultimo.
Questo punto non è indispensabile, ma soprattutto se si sono usati i pixel per lo schermo, è bene ridefinire la dimensione dei caratteri in punti, dato che questa misura è nata proprio per la stampa. Se si è utilizzato un approccio proporzionale nel CSS generico, dichiarando una misura di base per il body e percentuali o em per titoli e altri elementi, sarà facile trasformare tutto in punti con una sola dichiarazione:
body{font-size: 12pt}
Questo punto è senza dubbio il più importante in un CSS per la stampa. Sovente ci si trova infatti a stampare una pagina web e vedersi il contenuto tagliato sul lato destro. Se non si è usato un layout liquido è fondamentale far sì che il layout sia liquido in fase di stampa: basta ridefinire su "auto" la larghezza del contenitore principale. Nel caso il suo id sia "container" la regola CSS necessaria sarebbe:
div#container{width: auto}
Altro punto importantissimo: nella versione stampata navigazione e altre sezioni non indispensabili
andrebbero nascoste. Basterà impostare su "none" la proprietà display. Generalmente basta usare una
sola regola, accorpando tutti gli elementi da nascondere. Per esempio la seguente regola nasconde
il menu, la sezione dei link e i banner, ipoteticamente individuati da id "menu", "links" e "banner":
div#menu, div#links, div#banner{display:none}
Float e posizionamenti assoluti, soprattuto se usati per il layout, possono dare problemi in fase di stampa: oltre che per questioni di larghezza di area di stampa anche per qestioni di resa. Anche in questo caso basterà usare una regola che mostrerà elementi posizionati assolutamente e float nella posizione naturale del flusso di pagina, annullando le proprietà precedentemente impostate. La regola seguente annulla float e posizionamenti assoluti sul menu e la sezione delle news, che verranno quindi stampati in ordine di codice HTML:
div#menu,div#news{position: static;float: none}
Eventualmente sarà necessario sistemare i margini delle sezioni che sulla versione a schermo sono affiancate da elementi float o posizionati assolutamente, indipendentemente dal fatto che questi ultimi si vogliano stampare o meno.
C'è da premettere che gli sfondi delle pagine web non vengono stampati di norma dal browser, a meno che l'utente non decida di volerli stampare attraverso le impostazioni del browser. In ogni caso è importante quindi eliminarli e rispecificare il colore del testo soprattutto se a schermo è chiaro. La seguente regola specifica testo nero e sfondo bianco per il body, il container principale e l'header:
body,div#container,div#header{background: none #FFF;color: #000}
Altro aspetto essenziale è rivedere la tipografia per lo schermo, soprattutto nel caso si siano usate tecniche di image replacement. Fatta eccezione della List-Item Image Replacement, tutte le altre tecniche non garantiscono la stampa del testo rimpiazzato, dato che le immagini di sfondo non vengono stampate di default.
A seconda della tecnica utilizzata, sarà quindi indispensabile annullare per la stampa tutte le dichiarazioni atte a nascondere in testo per mostrare un'immagine di sfondo. Il rischio è infatti che nè il titolo testuale, nè l'immagine di background usate per il replacement vengano stampate, con conseguente perdita di informazione nella versione su carta.
Concludiamo con una finezza che non ha, purtroppo, compatibilit‡ con Internet Explorer,
ma sugli alti browser quali Opera, Safari e Firefox può costituire senza dubbio un
ausilio non indifferente sulla versione stampata. Grazie allo pseudo-elemento :after
e la proprietà content in questi browser è possibile infatti stampare
dopo i link il loro indirizzo tra parentesi attraverso una sola regola:
a[href]:after{content: "(" attr(href) ")"}
In questo articolo abbiamo visto brevemente otto consigli pratici per preparare facilmente una versione di stampa, spesso trascurata e che in realtà non richiede molto lavoro, dato che si tratta solo di riprendere il CSS per lo schermo e semplificarlo per la versione su carta. Anche in questo caso è importante una buona fase di test, anche solo attraverso l'anteprima di stampa con i diversi browser. Alla prossima.
Guida CSS di baseI CSS servono per gestire tutto il layout di un sito Web. E'... |
Guida Layout dei siti con i CSSLa guida ai layout con i CSS è uno strumento ideale per chi intende... |
Guida Interfacce web con PhotoshopQuesta guida mostra con semplici esempi come lavorare ad un layout e... |
Ogni mercoledì, direttamente nella tua e-mail: guide, articoli, tutorial, FAQ e approfondimenti tecnici su CSS e Web Design.
Iscriviti alla newsletter
|
|
Corso Webmaster base22 Febbraio 2010 a Milano |
|
|
Corso Accessibilità siti Web22 Marzo 2010 a Milano |
|
|
Corso Accessibilità siti Web01 Marzo 2010 a Roma |