Quando imposto la dimensione dei caratteri in CSS, dovrei usare un valore percentuale ( %
) o em
? Puoi spiegare il vantaggio?
Quando imposto la dimensione dei caratteri in CSS, dovrei usare un valore percentuale ( %
) o em
? Puoi spiegare il vantaggio?
Risposte:
C'è un ottimo articolo sulla tipografia web su A List Apart .
La loro conclusione:
È stato dimostrato che il ridimensionamento del testo e l'altezza della riga in ems, con una percentuale specificata sul corpo (e un avvertimento opzionale per Safari 2), fornisce un testo accurato e ridimensionabile su tutti i browser di uso comune oggi. Questa è una tecnica che puoi mettere nella tua borsa del kit e utilizzare come best practice per ridimensionare il testo in CSS che soddisfa sia i designer che i lettori.
line-heights
sono scritti meglio senza alcuna unità. Ciò è consentito dalle specifiche ed evita completamente alcune stranezze del browser davvero fastidiose quando si tratta di em
altezze di linea basate su
1
. Ad esempio, l'iPhone 4 ha una larghezza fisica dello schermo di 640 px, ma appare come 320 pixel "CSS" (DPR = 2). Quindi il sito web non sembra più piccolo!
Da http://archivist.incutio.com/viewlist/css-discuss/1408
%: Alcuni browser non gestiscono la percentuale per la dimensione del carattere ma interpretano il 150% come 150 px. (Alcune versioni di NN4, ad esempio.) IE ha anche problemi con la percentuale sugli elementi nidificati. Sembra che IE utilizzi la percentuale relativa alla visualizzazione invece che relativa all'elemento genitore. Ancora un altro problema (sebbene corretto secondo le specifiche W3C), in Moz / Ns6, non è possibile utilizzare la percentuale relativa agli elementi senza altezza / larghezza specificata.
em: A volte i browser usano la dimensione di riferimento sbagliata, ma delle unità relative è quella con meno problemi. A volte però potresti trovarlo interpretato come px.
pt: differisce notevolmente tra le risoluzioni e non deve essere utilizzato per la visualizzazione. Tuttavia è abbastanza sicuro per la stampa.
px: L'unica unità assoluta affidabile sullo schermo. Tuttavia, potrebbe essere interpretato erroneamente in stampa, poiché un punto di solito è costituito da diversi pixel, e quindi tutto diventa ridicolmente piccolo.
Entrambi regolano la dimensione del carattere rispetto a quello che era. 1.5em è uguale al 150%. L'unico vantaggio sembra essere la leggibilità, scegli quello con cui ti trovi più a tuo agio.
La vera differenza diventa evidente quando non lo usi per le dimensioni dei caratteri. L'impostazione di un padding
di 1em
non è la stessa di 100%
. em
è sempre relativo alla dimensione del carattere. Ma %
potrebbe essere relativo alla dimensione del carattere, alla larghezza, all'altezza e probabilmente ad altre cose che non conosco.
Dato che (quasi?) Tutti i browser ora ridimensionano la pagina nel suo insieme, piuttosto che solo il testo, i precedenti problemi con px
vs. %
vs. em
s in termini di ridimensionamento accessibile dei caratteri sono piuttosto discutibili.
Quindi, la risposta è che probabilmente non ha importanza. Usa quello che funziona per te.
%
è carino perché consente il ridimensionamento relativo.
px
è bello perché è abbastanza facile gestire le aspettative quando lo si utilizza.
em
può essere utile quando viene utilizzato anche per gli elementi del layout in quanto può consentire il dimensionamento proporzionale relativo alla dimensione del testo.
em
, per esempio. A parte questo, penso che le risposte su SO dovrebbero sforzarsi di essere senza tempo - dopotutto è una base di conoscenza. Wikipedia di programmazione :) Poiché Wikipedia viene aggiornata per riflettere i fatti, così dovrebbe rispondere, a mio modesto parere.
Per quanto riguarda la differenza tra le unità CSS %
e em
.
Per quanto ho capito (almeno teoricamente / concettualmente, ma forse non come queste due unità possono essere implementate nei browser) queste due unità sono equivalenti, vale a dire se si moltiplica il tuo em
valore con 100
e poi sostituirlo em
con %
esso dovrebbe essere la stessa cosa?
Se esiste effettivamente una vera differenza tra em e%, qualcuno può spiegarlo (o fornire un collegamento a una spiegazione)?
(Volevo aggiungere questo mio commento dove dovrebbe appartenere, cioè rientrato appena sotto la risposta da "Liam, answered Sep 25 '08 at 11:21"
dato che voglio anche sapere perché la sua risposta è stata sottovalutata, ma non sono riuscito a capire come inserire il mio commento lì e quindi ho dovuto scrivere questa risposta "thread globale")
Come dice Galwegian, px è il più affidabile per la tipografia web, poiché tutto il resto che fai sulla pagina è per lo più disposto in riferimento al monitor di un computer. Il problema con le dimensioni assolute è che alcuni browser (IE) non ridimensionano gli elementi con valore in pixel su una pagina web, quindi quando provi a ingrandire / ridurre , tutto si regola tranne quegli elementi.
Non so se IE8 lo gestisca correttamente, ma tutti gli altri fornitori di browser gestiscono i pixel bene ed è ancora un caso di minoranza in cui un utente ha bisogno di ingrandire / diminuire il testo (questa casella di testo su SO forse è l'eccezione). Se vuoi sporcarti davvero, puoi sempre aggiungere una funzione javascript per aumentare le dimensioni del testo e offrire un pulsante "piccolo" / "più grande" all'utente.
La libreria dell'interfaccia utente di Yahoo ( http://developer.yahoo.com/yui/ ) ha un bel set di classi CSS di base utilizzate per "ripristinare" le impostazioni specifiche del browser in modo che la base per la visualizzazione del sito sia la stessa per tutti (supportato) i browser.
Con YUI si dovrebbero usare le percentuali.