我应该在body或html元素上设置默认的font-size吗?

jos*_*hnh 50 html css font-size

我喜欢em在创建网站时使用s.因此,我设置一个默认font-size100.01%开启body元素.

我的问题是我应该在元素font-size上设置默认值吗?两者的利弊(如果有的话)是什么?bodyhtml

jos*_*hnh 39

现在该rem单元开始变得流行,建议在根元素(html标记)上设置基本字体大小(rem代表root em).

  • 请记住,如果你需要在`px`或`em`中提供一个回退,那就像指定一个额外的声明一样简单,这样你就可以在`rem`值之前得到一个回退值.当然,复杂性在于必须计算你需要的绝对值,否则可以通过使用`rem`单元来避免. (3认同)
  • 小心REM和IE9.我尝试使用它不仅仅是字体而且IE不像其他所有浏览器那样识别REM.看起来很糟糕. (2认同)
  • 如果有一个提供的例子,我将不胜感激. (2认同)

tw1*_*w16 21

我不认为在任何一个基础font-size上设置基础htmlbody允许使用ems进行大小调整有任何优点或缺点; 它们都会产生同样的效果.

与问题无关:

不过我建议使用不同的默认值font-size.我会把它设为:

body {
    font-size: 62.5%;
}
Run Code Online (Sandbox Code Playgroud)

这样做可以将默认值font-size16px下降到10px.这使得选择font-size变得更加容易,因为不需要进行困难的计算.这意味着它1em等于10px,因此计算px大小是乘以10的问题:

  • 1.0em = 10px
  • 1.4em = 14px
  • 1.8em = 18px
  • 2.2em = 22px

  • 数学不是问题,无论身体字体大小是什么,当涉及到行高和边缘底部时,数字仍然会变得混乱.谢谢你的回答. (6认同)
  • 出于好奇,为什么你将身体字体大小设置为62.5%以获得10px,假设浏览器的默认值实际上是16px ...当你可以将它设置为10px时?那么你仍然可以使用基于这个10px的rems.没有? (6认同)
  • [CSS向导写了一篇反对使用62.5%的文章](http://csswizardry.com/2011/05/font-sizing-with-rem-could-be-avoided),除非你真的想要一个10px的基本字体."我觉得,使用62.5%方法背后的主要原因是懒惰,这是一件好事.优秀的开发人员很懒散.但是懒惰是误导的;它实际上会让你更多的工作.你必须在所有方面定义字体大小元素而不仅仅是一次,让它们继承,当一个明确大小的元素放在另一个元素中时,你必须解决那些可怕的继承问题." (4认同)
  • @joshuanhibbert:数学部分是一个推荐作为我的主要答案的补充,即选择一个优于另一个没有优势/劣势. (2认同)
  • 这个怎么样...`html { font-size: 62.5% } body { font-size: 160% }` 这样,你仍然可以使 `1rem == 10px`,但是 1em 的大小仍然从文档正文中的内容相同(在“1em == 16px”处)。两全其美? (2认同)

Nin*_*inj 19

如果你真的想遵守规则并保持灵活性,你应该考虑这个:

  • htmlfont-size是root font-size,这意味着它将被用作rem计算的基础,但就是这样,没有别的.它不应该用于实际文本大小计算:它只是某些浏览器的一种技巧.
  • bodyfont-size是文本的默认字体大小:除非覆盖定义,否则所有文本都应具有此大小
  • 特殊元素应具有rem的大小,并以像素为后缀

这就是它在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% */
}
Run Code Online (Sandbox Code Playgroud)

请注意,虽然所有页面的元素都应该从body定义继承,但您可以使用包含全部标记的定义,就像在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;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不建议重置.制定标准是为了帮助您避免这种伎俩.