Ответ 1
Это действительно работает, но в CSS есть сложное место. html
получает фон body
, если он не установлен на html
сам, а viewport заполняется фоном html (что единственное наследование от child в css).
Это поведение указано в Уровень фонов и границ CSS-фрейма Уровень 3:
Холст документа - это бесконечная поверхность, на которой визуализируется документ. [CSS2] Поскольку ни один элемент не соответствует холсту, чтобы позволить стилизации холста CSS распространяется фон корневого элемента
Для документов, корневым элементом которых является HTML-элемент HTML или элемент html XHTML [HTML]: если вычисленное значение фонового изображения в корневом элементе равно none, а его фоновый цвет прозрачен, пользовательские агенты должны вместо этого распространять вычисленные значения свойств фона из этих элементов сначала HTML BODY или элемент тела тела XHTML.
Я добавил фон к html
в ваш пример, и вы можете видеть, это хорошо:
html, body {
font-size: 16px;
width: 70vw;
height: 40vh;
background-color: yellow;
}
html {
background: white;
}
h1 {
background-color: red;
}
<h1>My First Heading</h1>