在哪里最好声明font-family
CSS属性?在html
元素还是body
元素上?
html {
font-family: sans-serif;
}
或者body {
font-family: sans-serif;
}
我在网上搜索过,但是找不到一个确定的答案。
body
元素的后代,而body
元素本身是html
元素的子元素,因此继承font-family
属性的所有元素都可以从任何一个元素中愉快地采用它。(如果特定元素没有继承它,您总是可以用值inherit
覆盖它的font-family
属性。)html
元素表示整个文档(包括不可见的元数据),而body
元素表示文档的内容。由于font-family
是样式化内容的属性,将其应用于body
似乎是合乎逻辑的。这就是body
的一个优点。font-family
?我查看了Safari(WebKit),Mozilla Firefox和Chrome的用户代理样式表,并在没有覆盖CSS的页面上使用Web Inspector,但我找不到全局的font-family
声明。但这里有一些有趣的东西...在Safari中,全局文本color
属性定义在html
元素上。因此,如果这是任何参考,它表明WebKit浏览器确实在html
元素上定义全局字体属性。_reboot.scss
文件:// 2. Change the default font family in all browsers.
html {
font-family: sans-serif; // 2
…
}
然而,我们可以在 body
元素上覆盖这个样式,Bootstrap 就是在几行代码后这样做的:
body {
margin: 0; // 1
font-family: $font-family-base;
…
}
html
?font-family
(它适用于“所有元素”),但它确实给了我们一些线索。 W3C文档CSS Fonts Module Level 3中的第一个代码示例如下:body {
font-family: Helvetica;
font-weight: bold;
}
body {
font-family: "Gill Sans", sans-serif;
font-size: 12pt;
margin: 3em;
}
另一个点要注意:在BODY元素上的第一个声明将字体族设置为“Gill Sans”。如果该字体不可用,用户代理(通常称为“浏览器”)将使用sans-serif字体族,这是五个通用字体族之一,所有用户代理都知道。 BODY的子元素将继承font-family属性的值。
body
。body
: 2
html
: 0.5
body
! :-Dfont-family
。body {
font-family: Arial !important;
}
!important
在这里非常有用,因为如果您正在使用其他框架,则可以防止 font-family
被覆盖。*
选择器。* {
font-family: Arial !important;
}
< p > *
选择器表示任何/所有元素,但显然在覆盖更具体的选择器时将位于属性链底部。
请注意,!important
标志将使*
的字体样式绝对化,即使已使用其他选择器设置文本(例如body
或可能是p
)。
<html>
。 - Rob!important
,那就是罪上加罪了。 - Kal*
选择器可以覆盖更多的元素。例如,像input
这样的form
元素不会从html
和body
标签中继承字体样式。但是如果你使用*
设置,则可以确保你的字体样式传递到所有HTML元素中。* {
font-family: 'Open Sans', Helvetica, sans-serif;
}
这里有一个演示,使用*选择器和html和body元素进行比较。
将样式添加到<body>
标签的最佳方法。因为它包含层次结构,所以它必须包含所有全局样式。
<body>
的解释毫无意义。"它包含了层次结构"是什么意思?不过,CSS-Tricks的文章不错。 - Kal正如其他人所说,指定font-family
在body
上可能是有意义的。然而,由于将其应用于html
元素并没有太多的不利影响,我认为值得提及的是:root
伪类选择器,在这种情况下可能更方便,它选择页面的根元素(在大多数情况下是html
元素)。
通常,:root
选择器用于设置CSS自定义属性(变量)和字体大小,但我认为在它上面应用font-family
也是合理的。
:root {
/* ...custom properties, font-size, etc... */
font-family: sans-serif;
}
我知道大多数人会在 body 元素上设置字体系列。但由于没有对错之分(所有元素都是 html 和 body 元素的子元素),所以选择其中一个并坚持使用它。这适用于您所做的所有编程选择。这将使调试工作变得更加容易。
<head>
<style>
<!–– Insert CSS Code Here -->
</style>
</head>
我假设您的网站上只有一个字体系列,最好的方法是使用
*
选择器,它可以选择所有元素:
*{
font-family:"your-font-family";
}
如果您想更改网站的字体族,请使用以下代码:
*{
font-family:"your-font-family";
}
或者这样:
html, body, div, span, applet, object, iframe, table, caption, tbody, tfoot, thead, tr, th, td,
del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var,
h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code,
dl, dt, dd, ol, ul, li, fieldset, form, label, legend {
font-family: iransans !important;
}
- Sorangwala Abbasali
rem
单位,请确保在html
元素上设置基础字体大小。rem
单位是基于根元素即html
元素的字体大小。 - Gavin