Używam gradientu radialnego jako tła na mojej stronie internetowej, na przykład:
background-image: -webkit-gradient(radial, 100% 100%, 10, 90% 90%, 600, from(#ccc), to(#000));
Działa, ale gdy treść nie wypełnia całej strony, gradient jest odcinany. Jak mogę sprawić, by <body>
element zawsze wypełniał całą stronę?
body { width: 100%; height: 100%; }
nie działa?body { width: 100%; height: 100%; }
nie działa. Chyba też muszę to zastosować<html>
.Odpowiedzi:
html, body { margin: 0; height: 100%; }
źródło
html { height: 100%; }
faktycznie.html { height: 100%; }
też niebody { height: 100%; }
było dla mnie wystarczające (Opera dołączona jako test). Najlepiej działałohtml, body { min-height: 100%; }
użycie wysokości zamiast min-wysokości, które pozostawiło białe tło bez koloru tła zastosowanego podczas rozwijania niektórych zwijanych elementów div na środku mojej strony.min-height
naprawiłem to.100%
na100vh
.W naszej witrynie mamy strony, których treść jest statyczna, oraz strony, na których jest ładowana za pomocą AJAX. Na jednej stronie (stronie wyszukiwania) zdarzały się przypadki, gdy wyniki AJAX wypełniały więcej niż stronę, oraz przypadki, w których nie zwracały żadnych wyników. Aby obraz tła wypełniał stronę we wszystkich przypadkach, musieliśmy zastosować następujący CSS:
html { margin: 0px; height: 100%; width: 100%; } body { margin: 0px; min-height: 100%; width: 100%; }
height
dlahtml
imin-height
dlabody
.źródło
width: 100%;
.margin: 0;
wystarczy, nie ma potrzeby określania, której jednostki używasz zeroPonieważ żadna z pozostałych odpowiedzi nie zadziałała dla mnie, postanowiłem opublikować to jako odpowiedź dla innych szukających rozwiązania, które również znalazły ten sam problem. Zarówno html, jak i body musiały zostać ustawione za pomocą
min-height
lub gradient nie wypełniałby wysokości ciała.Uważam, że komentarz Stephena P. zawiera poprawną odpowiedź na to pytanie.
html { /* To make use of full height of page*/ min-height: 100%; margin: 0; } body { min-height: 100%; margin: 0; }
Kiedy ustawię wysokość html (lub html i body) na 100%,
html { height: 100%; margin: 0; } body { min-height: 100%; margin: 0; }
źródło
Musiałem zastosować 100% zarówno do html, jak i body.
źródło
Spróbuj użyć jednostek miary rzutni (vh, vm) na poziomie ciała
html, body {margin: 0; wyściółka: 0; } body {min-height: 100vh; }
Użyj jednostek vh dla poziomych marginesów, wypełnień i obramowań ciała i odejmij je od wartości min-height.
Miałem dziwaczne wyniki, używając jednostek vh, vm na elementach w ciele, szczególnie podczas zmiany rozmiaru.
źródło
Myślę, że w dużej mierze poprawnym sposobem jest ustawienie css na to:
html { overflow: hidden; } body { margin: 0; box-sizing: border-box; } html, body { height: 100%; }
źródło
Wypróbowałem wszystkie powyższe rozwiązania i nie dyskredytuję żadnego z nich, ale w moim przypadku nie zadziałały.
U mnie problem był spowodowany tym, że
<header>
tag miałmargin-top
5em, a<footer>
margines dolny 5em. Usunąłem je i zamiast tego włożyłem trochępadding
(odpowiednio na górze i na dole). Nie jestem pewien, czy wymiana marginesu była idealnym rozwiązaniem problemu, ale chodzi o to, że jeśli pierwszy i ostatni element w twoim<body>
ma jakieś marginesy, możesz zajrzeć do tego i je usunąć.Moje
html
ibody
tagi miały następujące stylebody { line-height: 1; min-height: 100%; position: relative; } html { min-height: 100%; background-color: #3c3c3c; }
źródło
Jeśli mają obramowanie lub wyściółkę, wówczas rozwiązanie
html, body { margin: 0; height: 100%; } body { border: solid red 5px; border-radius: 2em; }
tworzy niedoskonałe renderowanie
Aby zrobić to dobrze w obecności obramowania lub wypełnienia
użyj zamiast tego
html, body { margin: 0; height: 100%; } body { box-sizing: border-box; border: solid red 5px; border-radius: 2em; }
jak zauważył Martin , chociaż
overflow: hidden
nie jest to potrzebne.(2018 - testowane z Chrome 69 i IE 11)
źródło
body
tagu. Bez tego obramowaniabody
wypełni dokładnie 100% widocznego obszaru, możesz to zobaczyć na przykład kolorem tła. Prawidłowa odpowiedź na to pytanie, przyjęta 7 lat temu, jest nadal aktualna.To działa dla mnie:
<!doctype html> <html> <head> <meta charset="utf-8" /> <title> Fullscreen Div </title> <style> .test{ position: fixed; width: 100%; height: 100%; left: 0; top: 0; z-index: 10; } </style> </head> <body> <div class='test'>Some text</div> </body> </html>
źródło
Celem jest, aby element <body> zajmował dostępną wysokość ekranu.
Jeśli nie spodziewasz się, że Twoje treści zajmą więcej niż wysokość ekranu lub planujesz utworzyć wewnętrzny przewijalny element, ustaw
body { height: 100vh; }
w przeciwnym razie chcesz, aby element <body> był przewijalny, gdy jest więcej treści niż ekran może pomieścić, więc ustaw
body { min-height: 100vh; }
samo to prowadzi do celu, aczkolwiek z możliwym i prawdopodobnie pożądanym udoskonaleniem.
Usunięcie marginesu <body>.
body { margin: 0; }
są ku temu dwa główne powody.
PS jeśli chcesz, aby tło było gradientem radialnym, którego środek znajduje się na środku ekranu, a nie w prawym dolnym rogu, jak w przykładzie, rozważ użycie czegoś takiego jak
body { min-height: 100vh; margin: 0; background: radial-gradient(circle, rgba(255,255,255,1) 0%, rgba(0,0,0,1) 100%); }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale="> <title>test</title> </head> <body> </body> </html>
źródło