Давайте разберем код в вопросе:
* {
background-color: white;
}
body {
background-color: grey;
}
Это говорит:
- Выберите каждый элемент и сделать его цвет фона белый ,
- Выберите элемент
body
и сделайте цвет фона его серым.
Ну, если universal selector говорит выбрать все элементы, это будет включать в себя корневой элемент (html
).
Таким образом, код вычисляет для:
html {
background-color: white;
}
body {
background-color: grey;
}
Корневой элемент рисует холст белым, а body
элемент не имеет высоту, так что полотно остается белым.
Добавить контент на свою страницу или указать высоту body
, и вы увидите серый цвет.
высказанном в комментариях:
Интересно. Но если мы устраним *
из уравнения и просто получим body
, страница будет серой с указанием или без height
. Я не совсем понимаю, почему это так.
Так что, если мы исключим универсальный селектор, что происходит с background-color
корневого элемента?
Он сбрасывается в исходное значение: transparent
(см: 3.2. the background-color
property)
И когда background-color
html
из элемента transparent
, браузер использует background-color
из body
элемента рисовать холст.
3.11.2. The Canvas Background and the HTML <body>
Element
Для документов, чьи корневой элемент представляет собой HTML-HTML
элемент или XHTML html
элемент: если вычисленное значение background-image
на корневой элементе none
и его background-color
является transparent
, пользовательских агентов должен вместо этого распространять вычисленные значения фоновых свойств из первого элемента HTML BODY
или XHTML body
дочернего элемента. Использованные значения этого свойства BODY
являются его начальными значениями, а распространенные значения обрабатываются так, как если бы они были указаны в корневом элементе. Это рекомендуется, чтобы авторы HTML-документов указывали на холст фон для элемента BODY
, а не на элемент HTML
.
Это будет https://jsfiddle.net/13gjwLox/1/ вам просто нужно установить высоту –
Интересно. Но если мы исключим «*» из уравнения и просто получим «тело», страница будет серой с заданной или без «высоты». Я не совсем понимаю, почему это так. – jakewies
Я думаю, что когда вы не установите высоту, тогда html наследует цвет фона тела - https: // jsfiddle.net/gbzmauLa/как вы можете видеть в этом скрипте html переопределить цвет фона тела – Anonymous