Mi piace lavorare in em
quando creo siti web. Pertanto ho impostato una font-size
del font-size
predefinita del 100.01%
sull’elemento body
.
La mia domanda è: devo impostare la font-size
predefinita sul body
o sull’elemento html
? Quali sono i pro ei contro (se ce ne sono) di entrambi?
Ora che l’unità rem
sta diventando popolare, si consiglia di impostare la dimensione del font di base sull’elemento root (tag html) (rem sta per em em).
Non credo ci sia alcun vantaggio o svantaggio nell’impostare la font-size
base su html
o body
per consentire il dimensionamento con ems; entrambi avranno lo stesso effetto.
Non correlato alla domanda:
Ti suggerirei comunque di utilizzare una diversa font-size
predefinita. Lo impostare come:
body { font-size: 62.5%; }
In questo modo si riduce la font-size
predefinita da 16px
a 10px
. Questo rende quindi la scelta font-size
molto più semplice in quanto non è necessario eseguire calcoli complessi. Significa che 1em
è uguale a 10px
e quindi calcolare la dimensione px
è una questione di moltiplicare per 10:
1.0em
= 10px
1.4em
= 14px
1.8em
= 1.8em
2.2em
= 22px
Se vuoi davvero seguire le regole e mantenere la flessibilità, dovresti considerare questo:
html
è la dimensione del carattere di root , il che significa che sarà usato come base per il calcolo rem, ma questo è tutto, nient’altro. Non dovrebbe essere usato per il calcolo della dimensione del testo reale: è solo una sorta di trucco per alcuni browser. body
del carattere del body
è la dimensione del carattere predefinita del testo: tutto il testo dovrebbe avere questa dimensione, a meno che non si verifichi una definizione prevalente Ecco come appare in CSS:
html { font-size: 100% /* or 62.5% or whatever you like, it doesn't matter, it's just a browser fix, however "rem" units will be based on that value, so make it confortable for calculations */ } body { font-size: 0.75em; /* That is your text's default font size. Here i chose 12px */ } h1 { /* or whatever element you want to change the font size of */ font-size: 20px; /* for browsers that don't understand the "rem" unit */ font-size: 1.25rem; /* which equals to 20px if html's font-size was set to 100% */ }
Nota che, mentre tutti gli elementi della pagina dovrebbero ereditare dalla definizione del body
, potresti invece utilizzare una definizione all-tag-inclusive, come spesso visto nei resettaggi HTML:
a, html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, time, mark, audio, video { font-size: 0.75rem; }
Non consiglio comunque questo reset. Gli standard sono fatti per aiutarti a evitare questo tipo di trucchi.