In questo capitolo vengono esaminati gli aspetti fondamentali della natura e dell'uso dei «fogli di stile a cascata» o CSS (Cascading Style Sheet) della cui importanza si è già accennato precedentemente.
I CSS sono raccolte di regole riguardanti la presentazione di un documento HTML e che non influiscono sulla sua struttura interna.
Questo è un primo motivo per cui essi si fanno preferire rispetto ai tag HTML utilizzabili per variare l'aspetto del documento.
Altri vantaggi sono: la maggiore varietà di «interventi» realizzabili, grazie ai CSS, sull'aspetto della pagina; la possibilità di creare facilmente un'unica definizione delle caratteristiche di un certo sito esternamente alle sue pagine, cosa che porta un duplice ulteriore beneficio:
l'aspetto di tutte le pagine risulta uniforme;
le modifiche riguardanti l'esteriorità delle varie pagine non devono essere fatte in ognuna di esse ma solo una volta nel file contenente le definizioni del foglio di stile.
Occorre comunque segnalare che, a fronte di questi vantaggi, i fogli di stile presentano anche un inconveniente dovuto al mancato rispetto degli standard CSS da parte di qualche programma di navigazione; può infatti accadere che le stessa pagina, costruita con determinate regole di stile, venga visualizzata in modo diverso da browser diversi.
Al momento gli standard riguardanti i fogli di stile, rilasciati dal W3C, sono CSS1, CSS2 e CSS3; la sintassi non prevede distinzione fra maiuscole e minuscole ma in queste dispense si preferisce l'uso delle minuscole in coerenza con la scelta fatta riguardo ai sorgenti HTML.
Un foglio di stile è costituito da varie regole ognuna delle quali formata da un «selettore» e da un «blocco di dichiarazioni»; ogni dichiarazione consiste poi nell'associazione tra una «proprietà» e il relativo «valore».
L'insieme delle dichiarazioni deve essere racchiuso tra i simboli «{» e «}»; ogni dichiarazione deve essere conclusa con «;» e fra proprietà e rispettivo valore deve essere inserito un «:».
Il selettore determina, nell'ambito del documento HTML che fa uso di quella regola di stile, a quale elemento o a quali elementi si applicano le formattazioni specificate con le successive dichiarazioni.
Dei modi con cui le regole di stile possono essere associate a un documento HTML si occupa il prossimo paragrafo (4.3).
Come primo esempio di regola di stile si consideri la seguente:
|
Anche senza conoscere ulteriori dettagli sulla definizione delle regole di stile è abbastanza semplice capire che la regola in questione permette di ottenere intestazioni di primo livello (selettore h1) con testo di colore rosso e in corsivo.
Un selettore può definire gli elementi da formattare nei seguenti modi:
in base al nome dell'elemento;
in base a raggruppamenti di elementi in classi e in ID;
in base al fatto che gli elementi abbiano certi attributi e valori;
in base al contesto cui l'elemento appartiene;
in base a pseudo-classi e a pseudo-elementi.
La definizione può anche avvenire combinando uno o più dei succitati criteri.
Inoltre è possibile applicare le stesse dichiarazioni a più selettori semplicemente elencandoli separati da una «,».
Questa categoria di selettori è molto semplice in quanto gli elementi cui si vogliono applicare le regole si identificano con il nome che hanno nel linguaggio HTML.
Nell'esempio precedente si è visto un selettore di questo tipo, identificato con h1, che permette di applicare le regole specificate nelle successive dichiarazioni a tutti i marcatori <h1>.
Vediamo un altro esempio con il quale facciamo in modo che tutti i paragrafi e le intestazioni di livello tre abbiano testo di colore verde e giustificato:
|
Attraverso le classi e gli ID si possono specificare regole da applicare in modo indipendente dai marcatori HTML.
Una classe si definisce utilizzando il simbolo «.» seguito dal nome della classe e preceduto (non obbligatoriamente) dal nome di un marcatore.
Vediamo un esempio:
|
In questo modo vengono definita una classe classe1 relativa al marcatore <p> e una classe classe2 relativa a qualsiasi marcatore.
Nel codice HTML si può fare riferimento a queste regole usando l'attributo class per i tag cui si vogliono applicare; ad esempio:
|
Come si vede la classe classe2 si può associare a qualsiasi tag, mentre la classe classe1 solo a marcatori <p>.
Un ID si definisce utilizzando il simbolo «#» seguito dal nome della classe e preceduto (non obbligatoriamente) dal nome di un marcatore.
Vediamo un esempio:
|
Nel codice HTML si può fare riferimento a questa regola usando l'attributo id per il tag cui si vuole applicare tali formattazioni, ad esempio nel modo seguente:
|
La differenza fondamentale tra i selettori di classe e i selettori ID è che i primi si possono usare in associazione a quanti si vuole elementi, i secondi invece una sola volta all'interno di un documento HTML.
Quindi le regole da utilizzare per molteplici elementi del documento si definiranno per selettori di classe, mentre quelle uniche per selettori di ID.
Gli ID hanno il vantaggio che possono funzionare da segnaposti individuabili dai programmi di navigazione; se abbiamo un indirizzo come http://www.dominio.it#id1
, il browser cerca di localizzare l’elemento con ID id1 e se lo trova si posiziona in quel punto della pagina.
Notiamo comunque che un tag può tranquillamente essere associato contemporaneamente ad una classe e ad un ID in modo da avere delle peculiarità comuni anche ad altri elementi e contemporaneamente altre uniche, oltre che essere essere individuabile facilmente dal programma di navigazione.
La selezione di marcatori può avvenire anche in base alla presenza di un attributo oppure di un attributo con un dato valore (anche parziale); l'indicazione dell'attributo, semplice o valorizzato deve avvenire tra i simboli «[» e «]».
L'esempio seguente mostra nell'ordine l'uso di un selettore di attributo semplice, di un selettore di attributo esatto e di un selettore di attributo parziale (si noti in questo caso l'uso dell'operatore «~=»):
|
I selettori basati sul contesto tengono conto della struttura del documento HTML e permettono di fare riferimento a marcatori che sono «discendenti», «figli», «adiacenti» di altri marcatori.
Un marcatore è discendente di un altro (che viene detto «antenato») quando è annidato in esso a un qualunque livello di profondità; è invece figlio di un marcatore (che viene detto «genitore») se è un discendente diretto; infine due marcatori si dicono adiacenti se hanno lo stesso genitore.
Si tenga presente che in documento HTML il tag <html> è l'antenato di qualsiasi altro marcatore e per questo viene detto «elemento radice».
Nel prossimo esempio viene mostrata una porzione di codice HTML in cui abbiamo due tag <h1> e <p> adiacenti e figli di <body>, e i tag <em> e <b> figli rispettivamente di <h1> e <p> (oltre che, ovviamente, discendenti di <body>).
|
La selezione in base alla struttura avviene con la sintassi mostrata nell'esempio seguente:
|
I tre selettori dell'esempio si interpretano nel seguente modo:
seleziona i tag <em> che siano discendenti di un <h1>;
seleziona i tag <b> che siano figli di un <p>;
seleziona i tag <p> che siano adiacenti di un <h1>;
Questo tipo di selettori è particolarmente importante perché permette di assegnare stili non in base alla struttura del documento o alla presenza di certi elementi con determinati attributi e valori, ma in base allo «stato» in cui si trovano determinati oggetti in un certo momento.
In particolare con le pseudo-classi è possibile selezionare, in base allo stato in cui si trovano, certi tag che vengono utilizzati per l'interazione con l'utente.
Al momento l'unico esempio che abbiamo incontrato di tale tipo di marcatori è quello per i collegamenti <a> e quindi vediamo l'uso dei selettori di pseudo-classi solo relativamente ad esso; quanto mostrato può poi essere facilmente applicato anche ad altri tipi di tag «interattivi», quelli relativi ai moduli, presentati più avanti (paragrafo 6).
Nell'esempio seguente viene mostrato l'uso di selettori di pseudo-classi:
|
Con :link si selezionano tutti i collegamenti che sono davvero tali (si ricordi che il tag <a> viene anche usato per inserire le etichette con l'attributo name);
:visited permette di selezionare i collegamenti già visitati;
:hover si riferisce a elementi sui quali è posizionato il puntatore del mouse;
:active si riferisce a elementi attivati da operazioni dell'utente (ad esempio un collegamento nel momento in cui lo si attiva con il pulsante del mouse.
Le prime due sono pseudo-classi per i collegamenti; le altre due insieme a :focus (seleziona qualsiasi elemento che è attivo cioè che sta ricevendo l'input dell'utente) sono dette «dinamiche» e possono essere applicate a qualsiasi tag (come detto, il loro uso è importante relativamente ai moduli HTML).
Esiste anche la possibilità di combinare le pseudo-classi come mostrato di seguito:
|
Nel primo caso si vogliono selezionare i collegamenti non visitati su cui è posizionato il puntatore del mouse; nel secondo caso stessa cosa per i collegamenti visitati; il terzo caso è assurdo (un collegamento non può essere allo stesso tempo visitato e non visitato) e viene solitamente ignorato dai browser.
Concludiamo il paragrafo con gli pseudo-elementi grazie ai quali è possibile selezionare, e applicare gli stili, alla prima lettera o alla prima riga o anche prima e dopo un certo elemento.
Riguardo alla prima lettera e alla prima riga la sintassi è molto semplice e intuitiva, come dimostrato dal prossimo esempio:
|
Molto interessanti sono gli pseudo-elementi :before e :after che usati congiuntamente alla regola content permettono di inserire un contenuto (chiamato «contenuto generato») nel documento HTML prima o dopo un certo marcatore; un esempio può chiarire facilmente le potenzialità di questi selettori:
|
L'effetto è quello di inserire la stringa «Nuovo capitolo» di colore verde prima di ogni intestazione di livello 1 e la stringa «Fine del documento», obliqua, alla fine del testo visualizzato.
Interessante è anche l'uso della proprietà display che nell'esempio serve a inserire il testo generato come elemento di blocco e quindi a fare proseguire il testo contenuto nel tag <h1> su un nuovo paragrafo; tale proprietà può assumere vari altri valori, che qui non consideriamo, tra cui "inline" che è il valore per difetto.
Le possibilità offerte dalla proprietà content e da altre riguardanti tipi speciali di contenuto generato (virgolette generate, contatori) sono molto maggiori di quelle appena mostrate ma non vengono approfondite in questa sede.
Una volta visto come è possibile selezionare le parti del documento cui applicare gli stili passiamo ad elencare alcuni di quelli relativi alla formattazione del testo.
Alcune proprietà possono essere «ereditate»; ciò significa che gli stili vengono applicati a un marcatore e anche a tutti i suoi discendenti. |
L'elenco non è completo e viene fornito in modo molto sintetico con una tabella contenente le proprietà, il loro significato, i valori (almeno i più importanti) che esse possono assumere e se sono «ereditate» oppure no; in caso di necessità, queste informazioni possono essere integrate consultando testi e manuali riguardanti i CSS.
Altri tipi di regole di stile, stavolta relative al posizionamento degli oggetti nel documento, vengono invece illustrate nel paragrafo 4.4.
Quando si fa riferimento a grandezze (misura di caratteri, interlinea ecc.) si possono utilizzare varie unità di misura; alcune sono assolute:
pixel (px);
punti (pt);
millimetri (mm);
centimetri (cm);
pollici (in);
picas (pc, pari a 12 pt).
Altre unità di misura sono relative, come:
em-height (em), altezza media dell'insieme di caratteri usato;
ex-height (ex), altezza del carattere «x» dell'insieme di caratteri usato.
Esiste poi la possibilità di esprimere grandezze in percentuale, calcolata di solito in base alle dimensioni del tag genitore di quello considerato.
|
Una osservazione importante riguarda la proprietà font-family: è possibile che si imposti un tipo di carattere non disponibile presso l'elaboratore dell'utente; in tal caso si può includere il carattere nella pagina nel modo illustrato sotto:
|
Nell'esempio pippo.eot
è il file che contiene la definizione del carattere e che deve ovviamente essere presente nel servente Web.
Infine è importante segnalare che esistono anche proprietà a sintassi abbreviata, come ad esempio font: o background:, con le quali si possono assegnare, scrivendoli separati da spazi, i valori elencati in precedenza e relativi rispettivamente ai font e allo sfondo.
I fogli di stile contengono delle definizioni di proprietà da applicare a documenti HTML o a parti di essi e per questo devono essere «associati» al codice HTML; tale associazione può avvenire in varie maniere e questo differenzia in modo abbastanza netto i tipi di CSS.
In questo caso gli stili vengono assegnati direttamente agli elementi HTML a cui si vogliono applicare grazie all'attributo style; ad esempio:
|
In questo caso i fogli di stile sono definiti all'interno della pagina con l'uso del tag <style>; esempio:
|
Il risultato che si ottiene con il sorgente dell'esempio è mostrato in figura 4.18.
Il modo migliore per associare un foglio di stile ad una pagina HTML è quello di definirlo esternamente alla pagina stessa (come detto in precedenza questo permette di definire uno stile standard anche per un intero sito Web e di concentrare le modifiche solo sul foglio di stile e non su tutte le pagine).
Per il collegamento al foglio esterno si usa il tag <link> nella sezione di intestazione, con gli attributi href, rel e type; vediamo un esempio:
|
L'attributo rel può avere anche il valore "alternate stylesheet" per definire un foglio di stile alternativo; inoltre si può aggiungere l'attributo title per indicare il nome del foglio (questo è utile nel caso i programmi di navigazione siano in grado di mostrare all'utente la lista dei fogli di stile associati ad un documento permettendo di scegliere il preferito).
Il foglio di stile a cui si riferisce l'esempio si chiama foglio1.css
e potrebbe avere il seguente contenuto (definito con un normale editor di testo):
|
Le righe racchiuse tra «/*» e «*/» sono un commento; il costrutto @import serve ad importare all'interno del foglio di stile ulteriori definizioni contenute nel foglio a cui fa riferimento l'indirizzo specificato (in questo caso foglio2.css
nella directory libcss
del servente Web www.maxplanck.it
; le altre definizioni sono le stesse utilizzate nell'esempio con il CSS incorporato.
Se, per qualche motivo, si avessero problemi con il collegamento dei fogli di stile si può ricorrere all'importazione; a tale scopo basta usare il costrutto @import, in modo simile all'esempio precedente, inserito però direttamente nel documento HTML, racchiuso tra un tag <style> e un </style>.
A proposito del costrutto @import è importante osservare che esso fa parte, insieme a @media, @charset, @font-face, delle cosiddette «@-rules» con le quali si possono fare alcune operazioni particolari.
Fra queste, @media, riveste una notevole importanza per i CSS per la stampa, come mostrato nel paragrafo 4.5.
L'organizzazione a cascata dei fogli di stile consiste semplicemenite nel fatto che c'è un ordine di priorità tra regole di stile definite con tipi di CSS diversi; in altre parole se abbiamo un documento HTML in cui si utilizzano regole di stile definite in un foglio collegato, altre regole incorporate ed altre ancora in linea, in caso di conflitto sono queste ultime ad essere applicate.
Quindi le regole di stile in linea prevalgono su quelle incorporate (e importate) e queste a loro volta su quelle collegate.
Questo fatto può essere sfruttata quando, nella definizione degli stili delle pagine di un sito, si vogliono definire delle regole generali ma si vogliono avere delle «eccezioni» per alcune pagine; in tal caso si definiscono le regole globali in fogli collegati da usare in tutte le pagine, ma nelle pagine «particolari» si inseriscono delle regole di stile incorporate o in linea che sovrascrivono le altre.
In precedenza si è visto come impostando l'attributo rel del tag <link> con il valore "alternate stylesheet" sia possibile definire un foglio di stile alternativo da collegare a un certo documento HTML.
Per maggiore completezza occorre chiarire che ad un documento HTML si possono collegare:
un foglio di stile chiamato «persistente», o di base, che viene applicato indipendentemente dalle preferenze degli utenti; tale foglio di stile viene collegato impostando il valore "stylesheet" nell'attributo rel e senza attributo title;
un foglio di stile chiamato «automatico» che viene applicato se l'utente non fa alcuna scelta; tale foglio di stile viene collegato impostando il valore "stylesheet" nell'attributo rel e un nome nell'attributo title;
uno o più fogli di stile alternativi che vengono collegati impostando per ognuno il valore "alternate stylesheet" nell'attributo rel e un nome univoco nell'attributo title; l'utente può scegliere tra uno di questi e il foglio di stile automatico agendo su apposite voci di menu disponibili nei programmi di navigazione.
Nel prossimo esempio abbiamo una pagina HTML cui sono collegati un foglio persistente, uno automatico e due fogli alternativi; nella figura 4.22 viene mostrato il menu di scelta degli stili disponibili al momento della visualizzazione di tale documento con il browser Firefox.
|
Per parlare di posizionamento con i fogli di stile occorre prima di tutto chiarire come questi ultimi considerano e gestiscono gli elementi presenti in una pagina; ogni elemento genera un riquadro rettangolare (o box) non visibile comprendente:
l'area del contenuto dell'elemento;
lo spazio tra il contenuto dell'elemento e i bordi dell'area (padding);
i bordi esterni dell'area (border);
lo spazio intorno ai bordi (margin).
L'unica parte sempre presente è l'area del contenuto, le altre possono essere impostate ad ampiezza nulla.
Vediamo (o ricordiamo) anche altri concetti molto importanti riguardanti gli elementi di una pagina HTML.
I riquadri degli elementi possono essere di blocco o in linea, con le conseguenze che questo comporta e che sono già state chiarite in precedenza (paragrafo 2.5.4).
Gli elementi possono essere «non rimpiazzati» o «rimpiazzati»; nel primo caso il contenuto si trova all'interno del riquadro, nel secondo il tag è solo un segnaposto per un altro oggetto (l'esempio più banale di questo tipo di elemento è <img>).
Ogni elemento è contenuto in un «blocco contenitore», ad esempio:
|
qui i tag <h1> e <p> hanno <div> come blocco contenitore ed esso, a sua volta è contenuto in <body>.
Il «flusso» di visualizzazione di un documento HTML è da sinistra a destra e dall'alto verso il basso, questo è il comportamento normale di tutti i browser almeno per le lingue occidentali; un elemento può essere estrapolato dal flusso normale solo posizionandolo oppure rendendolo fluttuante con la proprietà float.
Nel resto del paragrafo vediamo appunto le proprietà dei CSS da utilizzare per il posizionamento oltre a quelle riguardanti le varie caratteristiche dei box degli elementi.
Il posizionamento può essere:
statico, è quello applicato per difetto; l'elemento rimane nel flusso normale del testo;
relativo; l'elemento risulta spostato rispetto a quella che sarebbe stata la sua posizione «naturale»;
assoluto; l'elemento è rimosso dal flusso e posizionato specificando le coordinate rispetto al suo blocco contenitore, cioè all'antenato più prossimo posizionato non staticamente (in assenza viene considerato come contenitore il documento);
fisso; come per assoluto ma considerando come blocco contenitore la finestra del browser.
In caso alcuni riquadri si sovrappongano, è anche possibile ordinarli in base all'asse perpendicolare all'area di visualizzazione, immaginando che il documento sia costituito da livelli sovrapposti.
Esiste infine la possibilità di rendere l'elemento fluttuante, cioè di spostarlo dal normale flusso, ma facendo in modo che esso influisca ancora sul resto del testo (che solitamente gli viene fatto scorrere intorno).
In ogni caso con i CSS si ottiene un tipo di posizionamento che viene detto «liquido» in quanto tiene conto automaticamente del variare delle dimensione dell'area di visualizzazione della pagina (finestra del browser dell'utente).
Come abbiamo fatto nel paragrafo 4.2.2 relativamente agli stili per la formattazione del testo, ricorriamo anche qui ad una tabella per elencare le proprietà riguardanti il posizionamento dei riquadri e le loro caratteristiche.
|
Prima di concludere osserviamo che per utilizzare proficuamente i fogli di stile per il posizionamento degli elementi di un documento HTML è opportuno usare abbondantemente il tag <div> in modo da definire le sezioni della pagina cui applicare le necessarie regole di stile.
Questa non deve essere però una forzatura: una buona suddivisione del documento in sezioni, che tenga conto correttamente della sua struttura logica, sarà quasi sicuramente idonea anche all'uso per l'assegnazione degli stili di formattazione e di posizionamento.
Infine vediamo due esempi molto simili di pagine contenenti un riquadro di testo con gestione del traboccamento dello stesso, tre immagini con relative didascalie posizionate con precisione e una immagine fluttuante contornata da testo sulla sua destra o sulla sua sinistra.
Il tutto è realizzato con regole di stile di un foglio incorporato, nel primo caso usando il posizionamento relativo nell'altro il posizionamento assoluto.
La scelta del CSS di tipo incorporato è dettata solo da ragioni di praticità: in questo modo infatti, per ognuno dei due esempi, è sufficiente mostrare il sorgente HTML e non più file separati.
Vediamo il primo esempio:
|
Il risultato che si ottiene è mostrato nella figura 4.26.
Ecco invece il sorgente del secondo esempio:
|
Il risultato che si ottiene è mostrato nella figura 4.28.
Si possono confrontare i risultati di questi due esempi con la pagina, simile, presentata nel paragrafo 3.2.4 ottenuta posizionando gli elementi tramite una tabella.
Una delle caratteristiche più interessanti dei CSS è la loro capacità di definire stili diversi per mezzi di comunicazione diversi; è possibile infatti associare allo stesso documento HTML un foglio di stile dedicato alla visualizzazione a video, uno per la stampa su carta, uno per dispositivi portatili (palmari), uno per alfabeto braille ed altri ancora.
In queste dispense si prende in esame solo il caso della stampa su carta che riveste sicuramente una notevole importanza viste le difficoltà che di solito si incontrano quando si stampano documenti visualizzati con un programma di navigazione.
Le pagine Web, infatti, sono quasi sempre concepite e realizzate per essere visualizzate a video e quindi contengono tutta una serie di oggetti e di formattazioni che al momento della stampa sono inutili se non addirittura dannosi; pensiamo ad esempio a barre di scorrimento, barre contenenti menu, immagini di sfondo, sfondi colorati.
C'è poi il caso, abbastanza comune, di pagine impostate con larghezza fissa maggiore di quella dei fogli A4 e che quindi risultano «tagliate» a destra quando trasferite su carta.
A questi inconvenienti è possibile dare una soluzione anche senza l'uso dei CSS; basta infatti predisporre versioni diverse della stessa pagina: una per il video e una per la stampa, premunendosi di inserire nella prima un collegamento alla seconda a disposizione dell'utente e da utilizzare al momento di effettuare la stampa.
In questo modo abbiamo però un notevole aggravio di lavoro per la scrittura di una doppia versione delle pagine del sito, senza contare poi che l'utente potrebbe non «notare» il collegamento alla versione da stampare e continuare quindi a usare la versione «sbagliata».
Meglio quindi ricorrere ai CSS tanto più che l'idea di base è la stessa: una pagina (o meglio, un foglio di stile) per il video e una per la carta, solo che stavolta la scelta viene fatta in automatico dal programma di navigazione al momento che si decide di mandare in stampa il documento.
La specifica del mezzo di comunicazione cui è rivolto un foglio di stile avviene nel seguente modo:
per i fogli collegati con l'attributo media del tag <link>; ad esempio:
|
per i fogli incorporati con il costrutto @media; ad esempio:
|
per i fogli importati:
|
Oltre ai media video e stampa sono previste altre possibilità che però sono molto meno usate e anche meno supportate dai vari browser; il pieno supporto si ha per screen, print e all che è il valore assegnato per difetto e significa che quel foglio di stile si applica a qualsiasi mezzo di comunicazione.
L'elenco completo dei media utilizzabili è il seguente:
all;
aural: dispositivi di sintesi vocale;
braille;
embossed: stampanti braille;
handheld: palmari;
print;
projection: proiezioni a tutto schermo;
screen;
tty: terminali a caratteri;
tv: web tv.
Quando si definiscono i fogli di stile per il video e la stampa occorre fare in modo che non risultino collegati al documento HTML anche fogli di stile per qualsiasi media perché le impostazioni presenti in essi avrebbero effetto anche sul documento stampato, con effetti potenzialmente deleteri.
Prima di tutto occorre osservare che per poter definire proficuamente un foglio di stile per la stampa occorre che il documento HTML contenga solo tag relativi alla sua struttura e non alla formattazione e presentazione; infatti, solo se queste ultime sono completamente demandate a regole di stile, è possibile alterare l'aspetto della pagina semplicemente cambiando il CSS collegato.
Nel foglio di stile per la stampa occorre eliminare gli elementi che non hanno senso per questo tipo di output associando ad essi la proprietà display con valore none; si possono poi ridimensionare e riposizionare gli altre elementi per sfruttare lo spazio «guadagnato».
Sicuramente è utile anche eliminare colori e immagini di sfondo, definendo il documento con caratteri neri su fondo bianco e togliere eventuali impostazioni della dimensione della pagina lasciando che il browser possa sfruttare tutta la dimensione del foglio in stampa.
Anche la scelta del tipo di carattere è importante: sullo schermo si preferiscono di solito caratteri «senza grazie» (sans-serif) come Arial e Verdana; per la stampante invece è meglio usare caratteri con «grazie» (serif) come Times o Georgia.
Per esprimere la dimensione dei caratteri (e tutte le altre grandezze assolute) per la stampa è preferibile abbandonare i pixel a vantaggio di altre unità di misura più legate al mezzo cartaceo come i punti (pt), i millimetri (mm) o i pollici (in); inoltre, visto che la lettura su carta è meno faticosa che sullo schermo, è possibile diminuire la dimensione dei caratteri per risparmiare carta e inchiostro.
Tra gli elementi che non hanno grande utilità passando dallo schermo alla carta ci sono i collegamenti ipertestuali che, ovviamente, sul foglio non possono essere attivati.
Per essi può allora essere utile far apparire in stampa l'indirizzo a cui puntano nel modo seguente:
|
In questo modo, dopo ogni collegamento, visitato o no, viene stampato l'indirizzo a cui esso punta, racchiuso tra parentesi quadrate.
Infine segnaliamo la possibilità di controllare le interruzioni di pagina in stampa grazie alle proprietà page-break-before, page-break-after, page-break-inside che possono valere auto (valore per difetto), always, avoid in modo da forzare o evitare interruzioni prima, dopo o all'interno di un certo blocco.