Come impostare la dimensione del font in CSS
La proprietà font-size imposta la dimensione del testo. Mettila su un elemento qualsiasi e ogni testo al suo interno eredita quella dimensione, a meno che un figlio non imposti la propria.
Per cambiare la dimensione del testo in HTML si usa comunque il CSS. Aggiungi un attributo style (<p style="font-size: 20px;">) o una regola in un foglio di stile. Il tag <font size="5"> degli anni '90 è obsoleto e non ha posto in una pagina moderna.
Le unità che accetta font-size
| Valore | Esempio | Rispetto a cosa è relativo |
|---|---|---|
px | 16px | Niente: una dimensione fissa |
rem | 1.25rem | La dimensione del font dell'elemento radice <html> (16px per impostazione predefinita) |
em | 1.2em | La dimensione del font dell'elemento genitore |
% | 120% | La dimensione del font del genitore, come em (120% equivale a 1.2em) |
| Parola chiave | large | Una scala predefinita attorno al valore predefinito medium |
| Parola chiave relativa | smaller, larger | Un passo rispetto alla dimensione del genitore |
| Viewport | 4vw | La larghezza del viewport (il 4%) |
| Funzione | clamp(1rem, 4vw, 2rem) | Fluida tra un minimo e un massimo |
Scrivi un valore e guarda la dimensione calcolata dal browser:
Prova 20px, 2em, 150%, x-large, smaller e 5vw. Un valore non valido, come big, viene ignorato e il testo mantiene l'ultima dimensione valida.
rem o em: la differenza che fa male
rem guarda sempre l'elemento radice, quindi 1.2rem ha la stessa dimensione ovunque compaia. em guarda il genitore, quindi le dimensioni si moltiplicano quando gli elementi sono annidati:
Il box em più interno misura 16 × 1.2 × 1.2 × 1.2 = 27.648px. Il box rem più interno è ancora di 19.2px. Questa moltiplicazione è utile per un componente le cui parti devono scalare insieme, e una sorpresa ovunque altrove. La pagina sulle unità confronta tutte le unità di lunghezza.
Parole chiave: da xx-small a xx-large
Le parole chiave assolute corrispondono a una scala fissa attorno a medium, che equivale alla dimensione predefinita dell'utente (16px se non l'ha cambiata):
Con i 16px predefiniti, small è 13px, large è 18px, x-large è 24px e xx-large è 32px. Le parole chiave vanno bene per un lavoro veloce, ma un design system di solito vuole una propria scala in rem.
Dimensione del font fluida con clamp()
Un titolo che deve crescere con lo schermo ma non diventare mai troppo piccolo o troppo grande è una sola chiamata a clamp(): il minimo, una dimensione preferita che scala e il massimo.
In un'anteprima larga 800px, 5vw fa 40px, che sta tra 24px e 48px, quindi vince. La pagina su clamp approfondisce la tipografia fluida.
Impostare una dimensione di base per tutta la pagina
Imposta la dimensione una volta su body (o html) e dimensiona tutto il resto in relazione a quella:
html { font-size: 100%; } /* respects the user's setting, usually 16px */
body { font-size: 1rem; }
h1 { font-size: 2.25rem; }
small, .caption { font-size: 0.875rem; }
Evita trucchi come html { font-size: 62.5%; } a meno che poi ogni dimensione della pagina non sia in rem, e non impostare mai una dimensione fissa in px su html: sovrascrive la dimensione del font che chi legge ha scelto nel browser, e alcune persone ne hanno bisogno per riuscire a leggere.
Note sull'accessibilità
- Un testo di 16px o più è una buona soglia minima per leggere sullo schermo.
- Le dimensioni in
remeemseguono l'impostazione predefinita del font dell'utente. Le dimensioni inpxseguono lo zoom della pagina ma non quell'impostazione. - Su iPhone, Safari ingrandisce la pagina quando metti il focus su un input con un font sotto i 16px. Dai ai campi dei moduli
font-size: 1remo più per evitarlo.
Errori comuni
- Usare il tag
<font>. È obsoleto. Usa la proprietàfont-size. - Dimensioni
emannidate che crescono o si riducono senza controllo. Usarem, a meno che tu non voglia la moltiplicazione. - Una dimensione fissa in
pxsuhtml. Sovrascrive l'impostazione del font di chi legge. - Dimenticare che i titoli hanno già una dimensione.
<h1>è2emper impostazione predefinita, quindi serveh1 { font-size: 1em; }se lo vuoi grande come il testo normale. - Solo unità del viewport.
font-size: 3vwdiventa illeggibile su un telefono ed enorme su un monitor largo. Racchiudilo inclamp().
Domande frequenti
Come cambio la dimensione del font in CSS?
Imposta la proprietà font-size sull'elemento: p { font-size: 18px; }. Accetta lunghezze (px, rem, em), percentuali e parole chiave come large.
Come cambio la dimensione del testo in HTML?
Con il CSS, in un foglio di stile o in un attributo style: <p style="font-size: 20px;">. Il vecchio tag <font size="5"> è obsoleto in HTML5 e non va usato.
Qual è la dimensione predefinita del font nei browser?
16px per il testo normale, a meno che l'utente non l'abbia cambiata nelle impostazioni del browser. È il valore a cui equivalgono per impostazione predefinita 1rem e la parola chiave medium.
Meglio px, em o rem per la dimensione del font?
Usa rem per la maggior parte del testo: segue l'impostazione del font del browser dell'utente e non si moltiplica. Usa em quando una dimensione deve seguire il genitore, come un'icona dentro un pulsante. px non segue la dimensione predefinita che chi legge imposta nel browser, quindi evitalo per il testo normale.
Perché la mia dimensione in em continua a crescere?
Perché em è relativo alla dimensione del font del genitore, quindi gli elementi annidati si moltiplicano: 1.2em dentro 1.2em è 1.44 volte la base. Passa a rem, che è sempre relativo all'elemento radice.