我应该设置正文或HTML元素的默认字体大小?
我喜欢在创build网站的时候工作。 所以我在body
元素上设置了100.01%
的默认font-size
。
我的问题是我应该设置body
或html
元素的默认font-size
? 两者的优点和缺点(如果有的话)有什么区别?
现在rem
单元已经开始stream行起来,build议在根元素(html标签)上设置基本字体大小(rem代表root em)。
我不相信在html
或body
上设置基本font-size
是有利的或者不利的,以允许用ems来resize; 他们都会有同样的效果。
与这个问题无关:
我会build议使用不同的默认font-size
。 我将它设置为:
body { font-size: 62.5%; }
这样做可以将默认的font-size
从16px
降低到10px
。 这使得selectfont-size
变得容易得多,因为不需要进行困难的计算。 这意味着1em
等于10px
,所以计算px
大小是乘以10的问题:
-
1.0em
=10px
-
1.4em
=14px
-
1.8em
=18px
-
2.2em
=22px
如果你真的想遵守规则,并保持灵活性,你应该考虑这一点:
-
html
的字体大小是根字体大小,这意味着它将被用作rem计算的基础,但就是这样,没有别的。 它不应该用于实际的文本大小计算:这只是一些浏览器的一种技巧。 -
body
的字体大小是文本的默认字体大小:所有的文本应该有这个大小,除非重载的定义 - 对象中的特殊元素应该具有大小,以像素为单位
所以这就是它在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% */ }
请注意,尽pipe所有页面的元素都应该从body
定义inheritance,但也可以使用全包含的定义,就像在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; }
不过我不build议这个重置。 标准是为了帮助你避免这种伎俩。