Ответ 1
-
html { color: black; background-color: white; }
Это правило применяет цвета к элементу
html
. Все потомки элементаhtml
наследуют егоcolor
(но неbackground-color
), включаяbody
. Элементbody
не имеет цвета фона по умолчанию, что означает его прозрачность, поэтому фонhtml
будет отображаться до и до тех пор, пока вы не установите фон дляbody
.Несмотря на то, что фон
html
окрашен во весь видовой экран, сам элементhtml
не охватывает всю высоту окна просмотра автоматически; фон просто распространяется в область просмотра. Подробнее см. этот ответ. -
body { color: black; background-color: white; }
Это правило применяет цвета к элементу
body
. Все потомки элементаbody
наследуют егоcolor
.Аналогично тому, как фон
html
будет автоматически передаваться в окно просмотра, фонbody
будет автоматически распространяться доhtml
до тех пор, пока вы не установите фон дляhtml
. См. этот ответ для объяснения. Из-за этого, если вам нужен только один фон (в обычных условиях), используете ли вы первое правило или второе правило, это не имеет никакого реального значения.Однако вы можете комбинировать фоновые стили для
html
иbody
с другими трюками, чтобы получить отличные фоновые эффекты, например Я сделал здесь. См. Приведенный выше ответ. -
* { color: black; background-color: white; }
Это правило применяет цвета к каждому элементу, поэтому ни одно из двух свойств не наследуется. Но вы можете легко переопределить это правило ни с чем другим, включая одно из двух вышеуказанных правил, поскольку
*
не имеет никакого значения в специфике селектора.Поскольку это полностью разрушает цепочку наследования для любого свойства, которое обычно унаследовано, например
color
, установка этих свойств в правиле*
считается плохой практикой, если у вас нет очень веских оснований нарушать наследование таким образом (большинство используемые для прерывания наследования требуют, чтобы вы делали это только для одного элемента, а не для всех).