to rzeczywiście confusi ng, ale jest określona w specyfikacji CSS 2.1, klauzula 14.2 Background: jeśli obliczona wartość background-color
to transparent
, a obliczona wartość background-image
to none
dla elementu html
(ponieważ rzeczy są domyślnie), przeglądarki muszą zamiast tego używać wartości obliczonej właściwości tła dla elementu body
i nie może renderować tła dla body
(tj. uczynić go przezroczystym). Oznacza to, że tło zmienia się magicznie na html
, jeśli html
nie ma własnego tła - a to wpływa tylko na właściwości tła, a nie na prawdziwą wysokość elementu body
.
Nie widziałem żadnego uzasadnienia dla tej dziwnej zasady, która nakazuje rodzaj "odwrotnego spadku". Ale jest to wyraźnie określone w CSS 2.1 i stosowane przez przeglądarki.
Jak wyjaśniono w innych odpowiedzi, można dokonać zawartość ma tło określonej wysokości albo przez ustawienie tła na html
(tak, że body
tło jest rzeczywiście stosowana tylko body
) lub za pomocą elementu otoki wewnątrz body
i ustalania wysokości na nim (ponieważ specjalna reguła dotyczy tylko body
).
Dziękuję Anne van Kesteren, która wskazała specyfikację CSS, gdy zapytałem o to na liście adresowej WHATWG. (Myślałem, że znam CSS 2.1 na pamięć, ale tak naprawdę nie) 01)
Nie rozumiem, dlaczego to się podnoszą głosy? Naprawdę nie rozumiem też tego pytania. Pytasz, dlaczego nie obejmuje on całej strony, ale sam odpowiedziałeś, mówiąc, że podałeś mu wysokość 100 pikseli? Robi dokładnie to, co kazałeś mu zrobić? Możesz umieścić kolor tła na tagu HTML, ale odpowiedź @ aashnisshah poniżej (powinna) zaspokoić Twoje potrzeby. – seemly
@seemly: była nieprawidłowa edycja pytania, możesz zobaczyć historię pytań, OP pyta, dlaczego tło zostało w rzeczywistości zastosowane do całej strony. –
@seemly, spróbuj zrozumieć pytanie. Chce zapytać, dlaczego kolor Bg zostanie zastosowany do całej strony. Szczerze mówiąc, aashnisshah's nie odpowiada na pytanie i odbiega od tego, co odpowiedź OP seek's – AnaMaria