Как уже отмечали другие *
ищет все элементы.Короче говоря, каждый раз, когда вы указываете конкретный тег, тег, естественно, будет нацелен на собственную среду.Однако другая причина заключается в том, что селектор html
считается корнем любого документа, а body
является его потомком.Так что * {}
! == все элементы в html, body {}
Поэтому, как вы и спросили, *
не равно <body>
.Кроме того, еще более интересно то, что :root
и html
оба нацелены на одну и ту же вещь, за исключением того, что :root
имеет более высокий приоритет по сравнению с html
аналогом.
См. HTML спецификация Есть только 2 элемента, которые происходят от HTML
корня <head>
и <body>
.См. спецификацию тела
Вот небольшой фрагмент, который поможет визуализировать:
* {
background-color: green;
}
body {
background-color: blue;
}
:root {
/* i have higher priority over html {} */
background-color: pink;
}
html {
background: purple;
}
<p>
test
</p>
<div>
test2
</div>
<footer>
Copyright © 2018
</footer>