2017-08-29 57 views
-5

是否有例如这两个选择之间有什么区别,html和*有什么区别吗?

html { 
    font-family: 'Roboto', sans-serif; 
    font-size: 1em; 
} 

* { 
    font-family: 'Roboto', sans-serif; 
    font-size: 1em; 
} 
+0

是的,差别很大。 '*'选择每个元素。例如,使用'border:1px纯红色'来尝试它。 – Ryan

+0

'html'选择'html'元素。 '*'选择所有元素。 – Li357

+0

@AndrewLi但是所有东西都在'html'之下,所以..不会将这些属性应用于所有东西吗? – Hackinet

回答

1

它们是完全不同的。尽管font-size被应用于html时被所有子女继承,但它会级联。但是当您使用*,时,每个元素都会获得属性。对所有元素应用font-size等属性的后果与仅对html。例如,考虑这两个例子:

html { 
 
    font-size: 3em; 
 
}
<h1>Test</h1>

这里,font-size被施加到仅仅html元件。由于h1的用户代理样式表的默认大小为2em,因此h1文本实际上是6em(2 x 3 = 6)。现在考虑使用*

* { 
 
    font-size: 3em; 
 
}
<h1>Test</h1>

你会看到,这是大。这是因为我们已应用font-size: 3em每个元素。因此,实际尺寸为3em(来自html元素)x 3em(来自body元素)x 3em(来自h1元素,默认的用户代理样式表被覆盖)。这使得27em,比我们第一次指定的3em大很多,并且使用html { … }的6em!有在副作用方面html*有很大差异,因为您使用的是font-sizeem s。

记住:关键区别是html选择html元素,而*选择每个单独的元素。由于*适用于所有元素,因此使用em会使文本指数地变大。