这两个选择器之间是否有任何区别,例如
html {
font-family: 'Roboto', sans-serif;
font-size: 1em;
}
和
* {
font-family: 'Roboto', sans-serif;
font-size: 1em;
}
答案 0 :(得分:1)
他们完全不同。虽然font-size
在应用于html
时会被所有子项继承,但它会向下舍入。但是当您使用*
时,每个元素都会获得属性。将font-size
等属性应用于所有元素而不仅仅是html
会产生一些后果。例如,请考虑以下两个示例:
html {
font-size: 3em;
}

<h1>Test</h1>
&#13;
此处,font-size
仅适用于html
元素。由于h1
具有由用户代理样式表设置的默认大小,即2em,h1
文本实际上是6em(2 x 3 = 6)。现在考虑使用*
:
* {
font-size: 3em;
}
&#13;
<h1>Test</h1>
&#13;
您会发现这很多更大。这是因为我们已将font-size: 3em
应用于每个元素。因此,实际大小为3em(来自html
元素)x 3em(来自body
元素)x 3em(来自h1
元素,将覆盖默认的用户代理样式表) 。那就是27em,比我们第一次指定的3em大得多,而且6em带有html { … }
! 在html
和*
的副作用方面存在很大差异,因为您正在使用font-size
和em
。
请记住:关键区别是html
选择html
元素,而*
选择每个单独的元素。这有副作用,因为*
适用于所有元素,因此使用em
会使文本呈指数级增大。