2013-07-09 18 views
57

Podczas projektowania układów ustawiam elementów "height do 100%, ale w niektórych przypadkach to się nie udaje, więc co należy z tego użyć?wysokość: 100% lub min-wysokość: 100% dla elementów html i body?

html, body { 
    height: 100%; 
} 

lub

html, body { 
    min-height: 100%; 
} 

Cóż, nie jest to opinia oparta jak każda metoda ma swoje wady, więc jaka jest zalecana do zrobienia i dlaczego?

Odpowiedz

142

Jeśli próbujesz zastosować obrazy tła do html i body, które wypełniają całe okno przeglądarki, nie. Użyj tego zamiast:

html { 
    height: 100%; 
} 

body { 
    min-height: 100%; 
} 

Moje rozumowanie jest podana here (gdzie wyjaśnię całościowo jak zastosować tła w ten sposób):

Nawiasem mówiąc, dlatego trzeba określić height i min-height do html i body odpowiednio, ponieważ żaden element nie ma żadnej wewnętrznej wysokości. Oba są domyślnie height: auto. Okienko ma 100% wysokości, więc height: 100% jest pobierane z widoku, a następnie stosowane jako body jako minimum umożliwiające przewijanie zawartości.

Pierwszy sposób, używając height: 100% na obu, zapobiega body od rozszerza swoją zawartością raz zaczną rosnąć poza wysokością rzutni. Technicznie nie zapobiega to przewijaniu zawartości, ale powoduje, że body pozostawia lukę pod zakładką, co zwykle jest niepożądane.

Drugi sposób, z użyciem min-height: 100% na obu, nie powoduje body rozszerzyć do pełnej wysokości html ponieważ min-height z odsetek nie działa na body chyba html ma wyraźny height.

Dla kompletności section 10 of CSS2.1 zawiera wszystkie szczegóły, ale jest to niezwyklezawiłe czytać, więc można pominąć, jeśli nie jesteś zainteresowany w cokolwiek poza to, co ja tu wyjaśnione.

+2

To mi się najbardziej podobało :) 'height: 100% pochodzi z viewportu, a następnie nałożone na ciało jako minimum, aby umożliwić przewijanie treści łatwego, prostego rozwiązania ... dzięki // –

+0

Zastanawiam się , w jaki sposób magicznie pojawiają się paski przewijania? Element 'html' ma domyślnie' overflow: visible', więc zakładam, że paski przewijania są wyświetlane ze względu na zachowanie przeglądarki, aby umożliwić wyświetlanie całego normalnego przepływu dokumentu. –

+0

@ Fabrício Matté: Przekłada się na 'overflow: auto' w oknie roboczym, z którego pochodzą paski przewijania. To omówiono w sekcji 11: http://www.w3.org/TR/CSS21/visufx.html – BoltClock